前文已经介绍了systemd在系统初始化中起到的作用和服务的管理和配置。这里补充一下systemd的其他工具和系统进程的管理
前文
Linux学习笔记10 系统启动初始化,服务和进程管理(上)-CSDN博客
Linux学习笔记11 系统启动初始化,服务和进程管理(下)-CSDN博客
systemd的其他命令
systemd-analyse
可以用来分析系统启动时的性能。
systemd-analyze [option] [command]
-option有以下选项:
--user
--system
分别是指定命令在什么级别查询systemd实例。
子命令
和systemctl一样,存在子命令。
time命令:输出系统启动时间。
blame:按照占时间长短输出所有正在运行的单元。用来优化系统,缩短启动时间。
critical-chain:输出启动链。
plot:输出服务启动时间和启动用时。
dot:输出单元依赖图
dump:输出详细的可读服务状态。
systemd-analyze plot >a.svg
systemd-analyze blame
示例
systemd-analyze dot | dot -Tsvg >mysvg.svg
hostnamectl
读取,修改主机名:
sudo hostnamectl
sudo hostnamectl set-hostname dreamer
localectl
(base) dreamer@dreamerVB:~$ localectl
System Locale: LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh
VC Keymap: n/a
X11 Layout: cn
X11 Model: pc105
timedatectl
(base) dreamer@dreamerVB:~$ timedatectl
Local time: 日 2024-12-01 20:54:53 CST
Universal time: 日 2024-12-01 12:54:53 UTC
RTC time: 日 2024-12-01 12:54:51
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
systemd-timesyncd.service active: yes
RTC in local TZ: no
loginctl
(base) dreamer@dreamerVB:~$ loginctl
SESSION UID USER SEAT TTY
1 1000 dreamer seat0 tty1
1 sessions listed.
关于系统的运行级别和状态在systemd中的解释
前文说过,systemd不存在运行级别,只有所谓的目标。
区别:
在运行级别中,系统按照指定的运行级别去启动对应服务。
在启用目标时,系统按照指定的目标对应的依赖去运行对应的服务。
系统的默认运行状态:
运行级别/etc/inittab中设置
默认目标在/lib/systemd/system/default.target中设置
注意:
想像切换运行级别一样,切换目标并不是启动某一个目标就行,而是要使用子命令isolate。
sudo systemctl isolate rescue.target
#sudo systemctl start rescue.target
#使用start试图切换这是错误的
因为start只是启动目标,并不会影响其他目标。
默认目标的话一般是图形化界面。如果是server版本可能是多用户命令行。
关于日志
systemd具有日志管理的模块。
journalctl命令
同样的,它也有很多选项。
-h, --help:显示帮助信息。
-V, --version:显示版本信息。
-b, --boot:仅显示当前引导的日志。
-u, --unit=UNIT:仅显示指定单元的日志。
-p, --priority=LEVEL:根据日志级别过滤输出,比如 emerg, alert, crit, err, warning, notice, info, debug。
-t, --identifier=STRING:仅显示带有指定字符串的消息。
-f, --follow:跟踪日志输出,类似于 tail -f。
-n, --lines[=INTEGER]:显示最后几行日志,默认为 10 行。
-r, --reverse:以相反的顺序显示日志。
--since=DATE:显示指定日期之后的日志。
--until=DATE:显示指定日期之前的日志。
-c, --cursor=CURSOR:从指定的游标位置开始显示日志。
-e, --pager-end:启动分页器并直接跳到日志的末尾。
--no-pager:不启动分页器。
-a, --all:显示所有日志,包括已经通过 journalctl --vacuum 删除的日志。
--vacuum-size=SIZE:清理日志文件以保持指定的磁盘空间。
--vacuum-time=TIME:清理早于指定时间的日志。
-k 或 --dmesg: 这个选项用于显示内核消息。它等同于 journalctl /dev/kmsg,会列出与 dmesg 命令相同的内核日志信息。
-S 或 --since=DATE: 这个选项用于指定开始显示日志的时间点。DATE 可以是多种格式,包括绝对时间(例如 "2023-01-01 00:00:00")或者相对时间(例如 "2023-01-01" 或者 "2 hours ago")。
-U 或 --until=DATE: 这个选项与 -S 相反,用于指定停止显示日志的时间点。与 -S 一样,DATE 可以是绝对时间或相对时间。
示例:
journalctl -S yesterday -U now