侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux systemctl命令教程:系统服务管理的艺术(附案例详解和注意事项)

在Linux系统中,systemctl 是一个非常重要的命令,用于检查和管理系统的 systemd 服务和守护进程。systemd 是大多数现代Linux发行版的初始化系统和服务管理器,负责启动系统时的服务,以及在系统运行时管理服务。systemctl 命令提供了一种机制来控制systemd系统和服务管理器。

Linux systemctl命令介绍

systemctlSystem 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:查看服务的日志

使用 journalctlsystemctl 相结合,查看 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.targetgraphical.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
  • 在执行服务管理操作前,最好先检查服务的状态。
  • 在启用或禁用服务的自启动时,要确保了解服务的依赖性和所需的配置。
  • 当服务不再需要时,应该考虑禁用其自启动,以节省系统资源并提高安全性。
  • 屏蔽服务时要小心,因为被屏蔽的服务无法被启动,这可能会导致系统或其它服务的问题。
0

评论区