在Linux系统中,systemctl
是一个非常重要的命令,用于检查和管理系统的 systemd
服务和守护进程。systemd
是大多数现代Linux发行版的初始化系统和服务管理器,负责启动系统时的服务,以及在系统运行时管理服务。systemctl
命令提供了一种机制来控制systemd系统和服务管理器。
Linux systemctl命令介绍
systemctl
是 System Control
的简写,它是 systemd
的主要命令行工具,用于管理系统。通过systemctl
,用户可以启动、停止、重启、重新载入服务,还可以使能或禁用服务的自动启动,查看服务状态等。
Linux systemctl命令适用的Linux版本
systemctl
命令适用于使用 systemd
作为初始化系统的Linux版本,包括但不限于以下发行版:
- Debian 8及以后的版本
- Ubuntu 15.04及以后的版本
- CentOS 7及以后的版本
- Fedora 15及以后的版本
- Arch Linux
- openSUSE
对于不包含 systemd
的老旧Linux发行版,systemctl
命令将不可用。
如果在使用 systemctl
时遇到 bash: systemctl: command not found
的错误,通常意味着你的系统可能不包含 systemd
或者其路径未包含在环境变量中。由于 systemd
是系统的根本组件,它通常在安装操作系统时一起安装。如果确实需要安装或重新安装 systemd
,请参考您的Linux发行版的官方文档。
Linux systemctl命令的基本语法
systemctl [选项] [命令] [服务名]
Linux systemctl命令的常用选项或参数说明
选项/参数 | 描述 |
---|---|
start | 启动一个或多个服务 |
stop | 停止一个或多个服务 |
restart | 重启一个或多个服务 |
reload | 重新载入一个或多个服务的配置 |
enable | 启用一个或多个服务的自启动 |
disable | 禁用一个或多个服务的自启动 |
status | 显示一个或多个服务的状态 |
is-active | 检查一个或多个服务是否处于活动状态 |
is-enabled | 检查一个或多个服务是否被设为自启动 |
is-failed | 检查一个或多个服务是否处于失败状态 |
list-units | 列出加载的单位文件 |
mask | 屏蔽一个或多个服务,使之不能被启动 |
unmask | 取消对一个或多个服务的屏蔽 |
注: 这里只列出了部分常用选项,systemctl
有许多其他选项,详细信息请参考 man systemctl
。
Linux systemctl命令实例详解
实例1:查看服务状态
查看 httpd
服务的状态:
[linux@bashcommandnotfound.cn ~]$ systemctl status httpd
实例2:启动服务
启动 httpd
服务:
[linux@bashcommandnotfound.cn ~]$ systemctl start httpd
实例3:停止服务
停止 httpd
服务:
[linux@bashcommandnotfound.cn ~]$ systemctl stop httpd
实例4:重启服务
重启 httpd
服务:
[linux@bashcommandnotfound.cn ~]$ systemctl restart httpd
实例5:查看所有服务的状态
列出所有已启动的服务:
[linux@bash```bash
[linux@bashcommandnotfound.cn ~]$ systemctl list-units --type=service
实例6:使能服务自启动
设置 httpd
服务开机自启:
[linux@bashcommandnotfound.cn ~]$ systemctl enable httpd
实例7:禁用服务自启动
禁止 httpd
服务开机自启:
[linux@bashcommandnotfound.cn ~]$ systemctl disable httpd
实例8:重新载入服务配置
重新载入 httpd
服务配置而不中断服务:
[linux@bashcommandnotfound.cn ~]$ systemctl reload httpd
实例9:检查服务是否活动
检查 httpd
服务是否正在运行:
[linux@bashcommandnotfound.cn ~]$ systemctl is-active httpd
实例10:检查服务是否允许自启动
检查 httpd
服务是否设置为开机自启:
[linux@bashcommandnotfound.cn ~]$ systemctl is-enabled httpd
实例11:屏蔽服务
屏蔽 httpd
服务,防止其被启动:
[linux@bashcommandnotfound.cn ~]$ systemctl mask httpd
实例12:取消屏蔽服务
取消屏蔽 httpd
服务:
[linux@bashcommandnotfound.cn ~]$ systemctl unmask httpd
实例13:检查服务是否失败
检查 httpd
服务是否因任何错误而进入失败状态:
[linux@bashcommandnotfound.cn ~]$ systemctl is-failed httpd
实例14:查看已失败的服务
列出所有的失败服务:
[linux@bashcommandnotfound.cn ~]$ systemctl --failed
实例15:重载所有服务
重载所有修改过的配置文件,不重启任何服务:
[linux@bashcommandnotfound.cn ~]$ systemctl daemon-reload
实例16:查看服务的日志
使用 journalctl
与 systemctl
相结合,查看 httpd
服务的日志:
[linux@bashcommandnotfound.cn ~]$ journalctl -u httpd
实例17:查看启动时失败的服务
显示启动过程中失败的服务:
[linux@bashcommandnotfound.cn ~]$ systemctl --state=failed
实例18:启动用户服务
启动由用户级别的 systemd
管理的服务,例如 user@1000.service
:
[linux@bashcommandnotfound.cn ~]$ systemctl --user start user@1000.service
实例19:查看服务的详细信息
显示 httpd
服务的所有详细信息,包括配置文件路径和服务状态:
[linux@bashcommandnotfound.cn ~]$ systemctl show httpd
实例20:查看启动耗时的服务
显示启动耗时的服务列表,可以帮助识别启动过程中延迟的服务:
[linux@bashcommandnotfound.cn ~]$ systemd-analyze blame
实例21:重置服务的失败状态
清除 httpd
服务的失败状态信息,使其恢复正常:
[linux@bashcommandnotfound.cn ~]$ systemctl reset-failed httpd
实例22:查看按需启动的服务
列出所有按需启动的服务,这些服务不会在启动时自动启动,而是在有请求时才会启动:
[linux@bashcommandnotfound.cn ~]$ systemctl list-unit-files --state=enabled
实例23:查看服务的依赖关系
查看 httpd
服务的依赖项,包括它所依赖的服务和被哪些服务依赖:
[linux@bashcommandnotfound.cn ~]$ systemctl list-dependencies httpd
实例24:改变服务的运行级别
更改 multi-user.target
到 graphical.target
(相当于运行级别3到运行级别5的转变):
[linux@bashcommandnotfound.cn ~]$ systemctl isolate graphical.target
实例25:强制关机或重启
立即关机并切断电源:
[linux@bashcommandnotfound.cn ~]$ systemctl poweroff
立即重启:
[linux@bashcommandnotfound.cn ~]$ systemctl reboot
Linux systemctl命令注意事项
- 使用
systemctl
时通常需要管理员权限,因此大多数命令前需要加上sudo
。 - 在执行服务管理操作前,最好先检查服务的状态。
- 在启用或禁用服务的自启动时,要确保了解服务的依赖性和所需的配置。
- 当服务不再需要时,应该考虑禁用其自启动,以节省系统资源并提高安全性。
- 屏蔽服务时要小心,因为被屏蔽的服务无法被启动,这可能会导致系统或其它服务的问题。
评论区