本文参考 阮一峰 Systemd 入门教程:命令篇 进行精简,详细的内容可以阅读原文。
systemctl reboot/poweroff/halt/suspend/hibernate/hybrid-sleep/rescue
systemd-analyze
hostnamectl
localectl
Systemd可以管理的所有系统资源,不同的资源统称为Unit。
Unit类型:
相关命令:
systemctl list-units # 查看当前系统所有的Unit
--all # 列出所有Unit,包括没有找到配置文件的或者启动失败的
--all --state=inactive # 列出所有没有运行的 Unit
--failed # 列出所有加载失败的 Unit
--type=service # 列出所有正在运行的、类型为 service 的 Unit
systemctl status # 查看系统状态和单个 Unit 的状态
systemctl status
systemctl -H root@hostname status
systemctl is-active/is-failed/is-enabled
管理Unit命令:
systemctl enable/disable
systemctl start/stop/restart/kill/reload
systemctl daemon-reload # 【重要】 重载所有修改过的Unit配置文件
systemctl show
systemctl set-property
systemctl list-unit-files # 列出所有配置文件
systemctl get-default # 操作系统启动时的默认Target
systemctl set-default
systemctl isolate
Unit依赖关系
systemctl list-dependencies
systemctl list-dependencies --all
service 配置文件
target配置文件
修改配置文件后重启
修改配置文件以后,需要重新加载配置文件,然后重新启动相关服务。
查看unit之间的依赖关系可以使用的命令:systemctl list-dependencies
注意:
# 查看所有日志(默认情况下 ,只保存本次启动的日志)
$ sudo journalctl
# 查看内核日志(不显示应用日志)
$ sudo journalctl -k
# 查看系统本次启动的日志
$ sudo journalctl -b
$ sudo journalctl -b -0
# 查看上一次启动的日志(需更改设置)
$ sudo journalctl -b -1
# 查看指定时间的日志
$ sudo journalctl --since="2012-10-30 18:17:16"
$ sudo journalctl --since "20 min ago"
$ sudo journalctl --since yesterday
$ sudo journalctl --since "2015-01-10" --until "2015-01-11 03:00"
$ sudo journalctl --since 09:00 --until "1 hour ago"
# 显示尾部的最新10行日志
$ sudo journalctl -n
# 显示尾部指定行数的日志
$ sudo journalctl -n 20
# 实时滚动显示最新日志
$ sudo journalctl -f
# 查看指定服务的日志
$ sudo journalctl /usr/lib/systemd/systemd
# 查看指定进程的日志
$ sudo journalctl _PID=1
# 查看某个路径的脚本的日志
$ sudo journalctl /usr/bin/bash
# 查看指定用户的日志
$ sudo journalctl _UID=33 --since today
# 查看某个 Unit 的日志
$ sudo journalctl -u nginx.service
$ sudo journalctl -u nginx.service --since today
# 实时滚动显示某个 Unit 的最新日志
$ sudo journalctl -u nginx.service -f
# 合并显示多个 Unit 的日志
$ journalctl -u nginx.service -u php-fpm.service --since today
# 查看指定优先级(及其以上级别)的日志,共有8级
# 0: emerg
# 1: alert
# 2: crit
# 3: err
# 4: warning
# 5: notice
# 6: info
# 7: debug
$ sudo journalctl -p err -b
# 日志默认分页输出,--no-pager 改为正常的标准输出
$ sudo journalctl --no-pager
# 以 JSON 格式(单行)输出
$ sudo journalctl -b -u nginx.service -o json
# 以 JSON 格式(多行)输出,可读性更好
$ sudo journalctl -b -u nginx.serviceqq
-o json-pretty
# 显示日志占据的硬盘空间
$ sudo journalctl --disk-usage
# 指定日志文件占据的最大空间
$ sudo journalctl --vacuum-size=1G
# 指定日志文件保存多久
$ sudo journalctl --vacuum-time=1years