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
相关推荐
企鹅侠客6 分钟前
ttyd:安全地通过网络共享您的 Linux 终端
linux·运维·ttyd
wb18916 分钟前
全局搜索正则表达式grep
运维·笔记·ubuntu·云计算
go_bai30 分钟前
map与set的模拟实现
开发语言·c++·笔记·学习方法
饭碗、碗碗香42 分钟前
【开发常用命令】:服务器与本地之间的数据传输
linux·运维·服务器·笔记·学习
JXNL@1 小时前
STM32外设学习之串口
stm32·单片机·学习
MonkeyBananas1 小时前
在Ubuntu中使用Apache2部署项目
linux·运维·ubuntu
潇-xiao2 小时前
vim的相关命令 + 三种模式(10)
linux·编辑器·vim
Wukong.Sun2 小时前
操作系统的概念,功能和目标
java·linux·开发语言·windows
虾球xz2 小时前
CppCon 2015 学习:Algorithmic Differentiation C++ & Extremum Estimation
开发语言·c++·学习
茶本无香2 小时前
Linux Alias 魔法:命令行效率提升秘籍
linux