3.2.6. systemd 下的系统管理

systemd 不仅仅提供系统初始化,还提供通用的系统管理功能。比如说日志记录,登录管理,时间管理,网络管理等等。

systemd(1) 通过几个命令来管理:

  • systemctl(1) 命令控制 systemd 的系统和服务管理器(命令行),

  • systemsdm(1) 命令控制 systemd 的系统和服务管理器(图形界面),

  • journalctl(1) 命令查询 systemd 日志,

  • loginctl(1) 命令控制 systemd 登录管理器,

  • systemd-analyze(1) 分析系统启动性能。

这里有一个典型的 systemd 管理命令片段列表。确切含义,请阅读相关 man 手册页。

表 3.5. 典型的systemd 管理命令片段列表

操作类型命令片段
用于服务管理的图形界面图形界面systemadm“ (systemd-ui 软件包)
列出所有 target 单元配置单元systemctl list-units —type=target
列出所有 service 单元配置单元systemctl list-units —type=service
列出所有单元配置类型单元systemctl list-units —type=help
列出内存中所有 socket 单元单元systemctl list-sockets
列出内存中所有 timer 单元单元systemctl list-timers
启动 “$unit单元systemctl start $unit
停止 “$unit单元systemctl stop $unit
重新加载服务相关的配置单元systemctl reload $unit
停止和启动所有 “$unit单元systemctl restart $unit
启动 “$unit“ 并停止所有其它的单元systemctl isolate $unit
转换到 “图形“ (图形界面系统)单元systemctl isolate graphical
转换到 “多用户“ (命令行系统)单元systemctl isolate multi-user
转换到 “应急模式“ (单用户命令行系统)单元systemctl isolate rescue
向”$unit“发送杀死信号单元systemctl kill $unit
检查”$unit“服务是否是活动的单元systemctl is-active $unit
检查”$unit“服务是否是失败的单元systemctl is-failed $unit
检查”$unit|$PID|device“的状态单元systemctl status $unit|$PID|$device
显示”$unit|$job“的属性单元systemctl show $unit|$job
重设失败的”$unit单元systemctl reset-failed $unit”
列出所有单元服务的依赖性单元systemctl list-dependencies —all
列出安装在系统上的单元文件单元文件systemctl list-unit-files
启用 “$unit“ (增加符号链接)单元文件systemctl enable $unit
禁用 “$unit“ (删除符号链接)单元文件systemctl disable $unit
取消遮掩 “$unit“ (删除到 “/dev/null“ 的符号链接)单元文件systemctl unmask $unit
遮掩 “$unit“ (增加到 “/dev/null“ 的符号链接)单元文件systemctl mask $unit
获取默认的 target 设置单元文件systemctl get-default
设置默认 target 为”graphical“ (图形系统)单元文件systemctl set-default graphical
设置默认的 target 为”multi-user“ (命令行系统)单元文件systemctl set-default multi-user
显示工作环境变量环境变量systemctl show-environment
设置环境变量 “variable“ 的值为 “value环境变量systemctl set-environment variable=value
取消环境变量 “variable“ 的设置环境变量systemctl unset-environment variable
重新加载所有单元文件和后台守护进程(daemon)生命周期systemctl daemon-reload
关闭系统系统systemctl poweroff
关闭和重启系统系统systemctl reboot
挂起系统系统systemctl suspend
休眠系统系统systemctl hibernate
查看 “$unit“ 的工作日志日志journalctl -u $unit
查看 “$unit“的工作日志 (“tail -f“ 式样)日志journalctl -u $unit -f
显示每一个初始化步骤所消耗的时间分析systemd-analyze time
列出所有单元的初始化时间分析systemd-analyze blame
加载”$unit“文件并检测错误分析systemd-analyze verify $unit
跟踪 cgroups(7) 的启动过程Cgroupsystemd-cgls
跟踪 cgroups(7) 的启动过程Cgroupps xawf -eo pid,user,cgroup,args
跟踪 cgroups(7) 的启动过程Cgroup读取 “/sys/fs/cgroup/systemd/“ 下的 sysfs

这里, 上面例子中的”$unit“,可以是一个单元名(后缀.service.target 是可选的),或者,在很多情况下,也可以是匹配的多个单元 (shell 式样的全局通配符”*“, “?“, “[]“,通过使用 fnmatch(3) ,来匹配目前在内存中的所有单元的基本名称).

上面列子的系统状态改变命令,通常是通过”sudo“来处理,用以获得需要的系统管理权限。

systemctl status $unit|$PID|$device“ 的输出使用有颜色的点(“●”)来概述单元状态,让人看一眼就知道。

  • 白色的 “●” 表示一个 “不活动”或”变为不活动中”的状态。

  • 红色的 “●”表示“失败”或者“错误”状态。

  • 绿色”●”表示“活动”、“重新加载中”或“激活中”状态。