Unit的概念
systemd开启和监督整个系统是基于unit的概念。unit是由一个与配置文件名同名的名字和类型组成的(例如:mysql.service unit有一个具有相同名字的配置文件,它是守护进程avahi的一个封装单元) unit有以下几种类型:
- service:代表一个后台服务进程,比如 mysqld 这是最常用的一类。
- socket:此类配置单元封装系统和互联网中的一个套接字。当下,systemd支持流式,数据报和连续包的 AF_INET,AF_INET6,AF_UNIX socket。
- device:此类配置单元封装一个存在于Linux设备树中的设备。每个使用udev规则标记的设备都将会在systemd中作为一个设备配置单元出现。
- mount:此类配置单元封装文件系统结构层次中的一个挂载点。systemd将对这个挂载点进行监控和管理。比如,可以在启动时自动将其挂载,可以在某些条件下自动卸载。systemd会将/etc/fstab中的条目都转换为挂载点,并在开机时处理。
- automount:此类配置单元封装系统结构层次中的一个自挂载点。每个自挂载配置单元对应一个挂载配置单元,当该自动挂载点被访问时,systemd执行挂载点中定义的挂载行为。
- swap:和挂载配置单元类似,交换配置单元用来管理交换分区。用户可以用交换配置单元来定义系统中的交换分区,可以让这些交换分区在启动时被激活。
- target:此类配置单元为其他配置单元进行逻辑分组。它们本身实际上并不做什么,只是引用其他配置单元而已,这样便可以对配置单元做一个统一的控制,就可以实现大家都非常熟悉的运行级别的概念。比如,想让系统进入图形化模式,需要运行许多服务和配置命令,这些操作都由一个个的配置单元表示,将所有的这些配置单元组合为一个目标(target),就表示需要将这些配置单元全部执行一遍,以便进入目标所代表的系统运行状态(例如:multi-user.target相当于在传统使用sysv的系统中运行级别5)。
- timer:定时器配置单元用来定时触发用户定义的操作。这类配置单元取代了atd,crond等传统的定时服务。
- snapshot:与target配置单元相似,快照是一组配置单元,它保存了系统当前的运行状态。
journalctl概述
Systemd 统一管理所有 Unit 的启动日志。带来的好处就是 ,可以只用journalctl一个命令,查看所有日志(内核日志和 应用日志)。
日志的配置文件/etc/systemd/journald.conf
不带任何选项时,journalctl 输出所有的日志记录(会发现日志信息贼多)
可以通过重定向只输出错误日志: journalctl > 2&>1
journalctl 命令参数
- -k(–dmesg): 仅显示内核日志
- -f(–follow): 只显示最新的日志项, 并且不断显示新生成的日志项, 此选项隐含了 -n 选项。
- -e(–pager-end): 在分页工具内 立即跳转到日志的尾部。 此选项隐含了 -n1000 以确保分页工具不必缓存太多的日志行。
- -n(–lines=): 限制显示最新的日志行数。 –pager-end 与 –follow 隐含了此选项。 此选项的参数:若为正整数则表示最大行数; 若为 “all” 则表示不限制行数;若不设参数则表示默认值10行;
- -u(–unit=UNIT|PATTERN): 仅显示属于特定单元的日志, 也就是单元名称正好等于 UNIT 或者符合 PATTERN 模式的单元;可以多次使用此选项以添加多个并列的匹配条件(相当于用”OR”逻辑连接); 例如:journalctl -u mysql.service
- -S(–since=): 显示晚于指定时间(–since=)的日志, 参数的格式类似 “2012-10-30 18:17:16” 这样。 如果省略了”时:分:秒”部分,则相当于设为 “00:00:00”, 参数还可以进行如下设置: (1)设为 “yesterday”, “today”, “tomorrow” 以表示那一天的零点(00:00:00)。 (2)设为 “now” 以表示当前时间。
- g(–grep=): 使用指定的正则表达式对MESSAGE=字段进行过滤,仅输出匹配的日志项。
- -U(–until=): 显示早于指定时间(–until=)的日志。跟-S的一样
- -b(–boot=[ID][±offset]): 显示特定于某次启动的日志, 这相当于添加了一个 “_BOOT_ID=” 匹配条件。举例来说, “-b 1”表示按时间顺序排列最早的那次启动, “-b 2”则表示在时间上第二早的那次启动; “-b -0”表示最后一次启动, “-b -1”表示在时间上第二近的那次启动, 以此类推。
_PID=[id]
: 按进程、用户或者群组ID查询- p(–priority=): 根据日志等级(等级范围)过滤输出结果。 日志等级数字与其名称之间的对应关系如下: “emerg” (0), “alert” (1), “crit” (2), “err” (3), “warning” (4), “notice” (5), “info” (6), “debug” (7),若设为一个单独的数字或日志等级名称, 则表示仅显示小于或等于此等级的日志(也就是重要程度等于或高于此等级的日志)