systemctl是systemd下管理服务的核心工具,支持查看状态、启停服务、设置开机自启、列出服务及屏蔽服务等操作。

如果您在Linux系统中需要管理服务的运行状态,例如启动、停止或配置开机自启,则systemctl是systemd初始化系统下的核心管理工具。以下是针对常见服务状态操作的具体方法:
一、查看服务当前状态
通过systemctl status命令可获取服务的实时运行信息,包括是否正在运行、最近的日志输出以及启用状态。该操作不改变服务本身,仅用于诊断和确认。
1、在终端中输入:systemctl status sshd(以sshd为例,可替换为任意服务名)。
2、观察输出中的Active:字段,若显示active (running)表示服务已启动;若为inactive (dead)则表示未运行。
3、检查Loaded:行末尾是否标注enabled或disabled,用于判断是否设置为开机自启。
二、启动与停止指定服务
使用systemctl start和stop命令可即时控制服务进程的生命周期,这些操作仅对当前会话生效,重启后不会保留状态变化。
1、启动服务:sudo systemctl start nginx。
2、停止服务:sudo systemctl stop nginx。
3、重启服务(先停止再启动):sudo systemctl restart nginx。
4、重新加载服务配置文件(不中断运行):sudo systemctl reload nginx。
三、设置服务开机自启或禁用自启
启用或禁用开机自启会影响服务在系统引导时的自动加载行为,其配置保存在unit文件的Install段中,修改后需重新加载systemd配置才能确保识别更新。
1、启用开机自启:sudo systemctl enable httpd。
2、禁用开机自启:sudo systemctl disable httpd。
3、若服务unit文件中未定义[Install]段,执行enable会提示The unit files have no installation config,此时无法启用自启。
4、启用后可通过ls /etc/systemd/system/multi-user.target.wants/ | grep httpd验证软链接是否存在。
四、列出所有已加载的服务及其状态
该操作用于全局掌握系统中服务的整体分布情况,区分静态服务、启用服务与运行中服务,便于批量排查或审计。
1、列出所有已加载服务(含状态):systemctl list-units --type=service --all。
2、仅显示正在运行的服务:systemctl list-units --type=service --state=running。
3、仅显示已启用但当前未运行的服务:systemctl list-unit-files --state=enabled | grep disabled(需结合list-units进一步确认实际状态)。
五、屏蔽或取消屏蔽服务
屏蔽服务会创建指向/dev/null的符号链接,彻底阻止其被手动或依赖方式启动;取消屏蔽则恢复原始unit文件的可用性。此方法比disable更严格。
1、屏蔽服务(禁止任何方式启动):sudo systemctl mask cups。
2、验证屏蔽状态:systemctl status cups,输出中将显示masked。
3、取消屏蔽:sudo systemctl unmask cups。
4、取消屏蔽后仍需执行sudo systemctl enable cups才能恢复自启能力。










