Linux如何管理系统服务状态_Linux下systemctl启动、停止与自启【指南】

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

如果您在Linux系统中需要管理服务的运行状态,例如启动、停止或配置开机自启,则systemctl是systemd初始化系统下的核心管理工具。以下是针对常见服务状态操作的具体方法:

一、查看服务当前状态

通过systemctl status命令可获取服务的实时运行信息,包括是否正在运行、最近的日志输出以及启用状态。该操作不改变服务本身,仅用于诊断和确认。

1、在终端中输入:systemctl status sshd(以sshd为例,可替换为任意服务名)。

2、观察输出中的Active:字段,若显示active (running)表示服务已启动;若为inactive (dead)则表示未运行。

3、检查Loaded:行末尾是否标注enableddisabled,用于判断是否设置为开机自启。

二、启动与停止指定服务

使用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才能恢复自启能力。