除了整齐划一的 Unit 文件,Systemd 的魔力还体现在它自带的一套犹如百宝箱一样的工具集上。
命令 | 功能 |
---|---|
systemctl | 用于检查和控制各种系统服务和资源的状态 |
bootctl | 用于查看和管理系统启动分区 |
hostnamectl | 用于查看和修改系统的主机名和主机信息 |
journalctl | 用于查看系统日志和各类应用服务日志 |
localectl | 用于查看和管理系统的地区信息 |
loginctl | 用于管理系统已登录用户和 Session 信息 |
machinectl | 用于操作 Systemd 容器 |
timedatectl | 用于查看和管理系统的时间和时区信息 |
systemd-analyze | 显示此次系统启动时运行每个服务所消耗的时间,可以用于分析系统启动过程中的性能瓶颈 |
systemd-ask-password | 辅助性工具,用幸好遮障用户的任意输入,然后返回实际输入的内容 |
systemd-cat | 用于将其它命令的输出重定向到系统日志 |
systemd-cgls | 递归地显示指定 CGroup 的继承链 |
systemd-cgtop | 显示系统当前最耗资源的 CGroup 单元 |
systemd-escape | 辅助性工具,用于去除指定字符串中不能作为 Unit 文件名的字符 |
systemd-hwdb | Systemd 的内部工具,用于更新硬件数据库 |
systemd-delta | 对比当前系统配置与默认系统配置的差异 |
systemd-detect-virt | 显示主机的虚拟化类型 |
systemd-inhibit | 用于强制延迟或禁止系统的关闭、睡眠和待机时间 |
systemd-machine-id-setup | Systemd 的内部工具,用于给 Systemd 容器生成 ID |
systemd-notify | Systemd 的内部工具,用于通知服务的状态变化 |
systemd-nspawn | 用于创建 Systemd 容器 |
systemd-path | Systemd 的内部工具,用于显示系统上下文中的各种路径配置 |
systemd-run | 用于将任意指定的命令包装成一个临时的后台服务运行 |
systemd-stdio-bridge | Systemd 的内部工具 ,用于将程序的标准输入输出重定向到系统总线 |
systemd-tmpfiles | Systemd 的内部工具,用于创建和管理临时文件 |
systemd-tty-ask-password-agent | 用于响应后台服务进程发出的输入密码请求 |
主机名、时间、地区信息管理
hostnamectl 显示主机名
hostnamectl set-hostname xxx 设置主机名
–host 和 –machine 参数可以远程查看和修改另一个主机或容器。
timedatectl 和 localectl 作用类似。
电源管理
systemctl poweroff | halt 关机
systemctl reboot 重启
systemctl suspend 待机
systemctl hibernate 休眠
启动时间和运行状态分析
systemd-analyze time 打印最近一次启动消耗的时间
systemd-analyze blame | head 按启动耗时长短排序
systemd-analyze plot 生成详细 SVG 图
systemd-analyze dump 打印当前所有 Unit 状态
systemd-analyze dot 生成系统中所有 Unit 的依赖关系图
systemd-anylyze set-log-level emerg | alert | crit | err | warning | notice | info | debug
systemd-analyze verify xxx 检测 Unit 文件格式正确性
辅助性命令工具
systemd-ask-password
|
|
systemd-run
|
|
当服务正常结束后(返回值为 0)会自动从 Systemd 的记录中消失,但其留下的日志仍然可以通过 journalctl 查看到。反之,如果服务异常结束(返回值非 0),则这个服务的记录会继续留在 Systemd 中,可以通过 “systemctl list-units”命令查看到。
$ sudo systemd-run --on-active=30 --time-property=AccuracySec=100ms /bin/touch/tmp/time-up
生成临时定时器。
此时系统创建了两个临时的 Unit 文件。需要注意一点,其中的服务 Unit 文件会在定时器时间到时,且响应的任务顺利完成后自动删除。然后,定时器的 Unit 文件并不会随着任务的完成而自动消失,需要手工执行“systemctl stop”命令来移除。
systemctl reset-failed
命令可以用来清理失败的临时服务。