在上一篇文章《Linux的运行级别与目标》中,我介绍过 Linux 用 systemd 来取代 init 做为系统的初始化进程。尽管这一改变引来了不少争议,但大多数发行版,包括 RedHat、Fedora、CentOS、Debian、Ubuntu、openSUSE、Arch 等等都已经作出了调整。无论是哪个发行版本,systemd 都用标准的 systemctl 工具来进行管理,本文将对如何使用 systemctl 作出详细讲解。 html
(1)查看你的系统有没有使用 systemd shell
若是你不肯定你的 Linux 版本有没有使用 systemd,能够用下面的命令来检查一下 ssh
#systemctl --version 工具
好比个人系统返回结果是 systemd 219。若是系统没有使用 systemd 的话,应该找不到 systemctl 命令。 性能
(2)验证一下系统进程的层级关系 学习
systemd 是系统的初始化进程,因此它应该是全部其余进程的父进程,咱们用 pstree 命令来验证一下 spa
#pstree 3d
(3)分析系统启动性能 rest
查看系统启动时间可使用 system-analyze 命令,默认是查看内核、initrd 和用户空间的启动时间。 htm
#system-analyze
若是查看每一个服务的启动耗时能够用 system-analyze blame
#system-analyze blame
返回结果是按照耗时长短来排序的,最上面的就是耗时最长的服务。
(4)查看单元(unit)
systemd 是经过单元来实现系统管理的。单元又分红不少种,好比服务单元(Service Unit)、挂载单元(Mount Unit)、设备单元(Device Unit)、套接字单元等(Socket Unit)。每个单元都有相应的配置文件,主要存放在 /usr/lib/systemd/system 和 /etc/systemd/system 目录中。咱们用 systemctl 命令来管理这些单元。
查看系统中全部的单元能够用
#systemctl list-unit-files
能够看到里边有不少停用的单元,若是只想看正在运行的单元可使用命令
#systemctl list-units
(5)管理服务
以前版本的 Linux 是经过 service 和 chkconfig 来管理服务。如今咱们应该主要用 systemctl 来对服务进行管理。
若是想查看系统当前全部的服务,包括全部状态的服务,能够用命令
#systemctl list-unit-files --type=service
若是想查看某个服务的当前状态,能够用
#systemctl status 服务名
好比咱们想看一下当前 sshd 服务的状态,结果显示:
Loaded: loaded (/usr/lib/systemd/system/sshd.service 表示服务被加载,以及它的单元配置文件路径
enabled 表示该服务开机会自动启动
vendor preset: enabled 表示该服务在系统中默认预设就是开机自动启动
Active: active (running) since 三 2020-05-27 08:50:15 CST; 8h ago 表示该服务当前正在运行,以及它的运行时间
Main PID: 1005 (sshd) 主要给出了 PID 的信息
若是想启动/中止/重启/从新加载某个服务,能够用
#systemctl start/stop/restart/reload 服务名
若是想查看服务是否被设为开机自动启用
#systemctl is-enabled 服务名
设置服务设为开机自动启用
#systemctl enable 服务名
设置服务设开机不自动启用
#systemctl disable 服务名
除了以上这些,systemd 还有不少其余管理功能,好比关机、重启、休眠等功能,你也能够经过编写你本身的单元文件来建立新的服务,在我以前的文章《Linux的运行等级与目标》中还介绍过经过目标(target)来管理系统运行级别。systemd 主要是经过 systemctl 来进行管理,它集以前的 service 和 chkconfig 工具于一体,功能很是强大,感兴趣的同窗能够经过手册来再更深刻地学习。
推荐阅读:
- The End -