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) 的启动过程 | Cgroup | “systemd-cgls “ |
跟踪 cgroups(7) 的启动过程 | Cgroup | “ps 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
“ 的输出使用有颜色的点(“●”)来概述单元状态,让人看一眼就知道。
白色的 “●” 表示一个 “不活动”或”变为不活动中”的状态。
红色的 “●”表示“失败”或者“错误”状态。
绿色”●”表示“活动”、“重新加载中”或“激活中”状态。