Linux学习笔记12 systemd的其他命令

前文已经介绍了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
相关推荐
雯宝2 小时前
mnt_init 函数
linux
UIU1143 小时前
递归算法与汉诺塔
c++·学习·算法·c#·递归
律宏阔8 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔8 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴8 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千8 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei378 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei378 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei378 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
GeW8 小时前
制造业高端化,为什么必须重估Linux和数据库?
linux