Systemd 可以管理所有系统资源。不同的资源统称为 Unit(单位),Unit一共分成12种。
Service unit:系统服务
Target unit:多个 Unit 构成的一个组
Device Unit:硬件设备
Mount Unit:文件系统的挂载点
Automount Unit:自动挂载点
Path Unit:文件或路径
Scope Unit:不是由 Systemd 启动的外部进程
Slice Unit:进程组
Snapshot Unit:Systemd 快照,可以切回某个快照
Socket Unit:进程间通信的 socket
Swap Unit:swap 文件
Timer Unit:定时器
一、查看命令
列出正在运行的Unit:systemctl list-units
列出所有Unit,包括没有找到配置文件的或者启动失败的:systemctl list-units --all
列出所有没有运行的 Unit:systemctl list-units --all --state=inactive
列出所有加载失败的 Unit:systemctl list-units --failed
列出所有正在运行的、类型为 service的Unit:systemctl list-units --type=service
二、设置开机启动
systemctl enable 和systemctl disable命令打开或关闭Unit的开机自启动。
三、查看运行状态
systemctl status命令用于查看系统状态和单个 Unit 的状态。
显示系统状态:systemctl status
显示单个Unit的状态:sysystemctl status bluetooth.service
显示远程主机的某个 Unit 的状态:systemctl -H root@rhel7.example.com status httpd.service
上面的输出结果含义如下:
Loaded行:配置文件的位置,是否设为开机启动
Active行:表示正在运行
Main PID行:主进程ID
Status行:由应用本身(这里是 httpd )提供的软件当前状态
CGroup块:应用的所有子进程
日志块:应用的日志
除了status命令,systemctl还提供了三个查询状态的简单方法,主要供脚本内部的判断语句使用。
显示某个 Unit 是否正在运行:systemctl is-active application.service
显示某个 Unit 是否处于启动失败状态:systemctl is-failed application.service
显示某个 Unit 服务是否建立了启动链接:systemctl is-enabled application.service
四、设置Unit的启动停止或重载
对于用户来说,最常用的是下面这些命令,用于启动和停止 Unit(主要是 service)。
启动一个服务:systemctl start apache.service
停止一个服务:systemctl stop apache.service
重启一个服务:systemctl restart apache.service
杀死一个服务的所有子进程:systemctl kill apache.service
重新加载一个服务的配置文件:systemctl reload apache.service
重载所有配置文件:systemctl daemon-reload
显示某个Unit的所有底层参数:systemctl show httpd.service
显示某个Unit的指定属性的值:systemctl show -p CPUShares httpd.service
设置某个Unit的指定属性:systemctl set-property httpd.service CPUShares=500
五、查看依赖关系
Unit之间存在依赖关系:A 依赖于 B,就意味着 Systemd 在启动 A 的时候,同时会去启动 B。
systemctl list-dependencies命令列出一个 Unit 的所有依赖。如systemctl list-dependencies nginx.service
输出结果之中,有些依赖是 Target 类型,默认不会展开显示。如果要展开 Target,就需要使用--all参数。
systemctl list-dependencies --all nginx.service
- 本文固定链接: https://www.qingheluo.com/systemdzhongunitguanli/
- 转载请注明: qingheluo 于 清河洛 发表