Linux Systemd 介绍

发布时间: 更新时间: 总字数:780 阅读时间:2m 作者: 分享 复制网址
专栏文章
  1. Linux 基础知识
  2. chroot 技术简介
  3. Linux 中个目录说明
  4. 进程、线程、协程的作用和区别
  5. Linux 动态链接库和静态链接库
  6. Linux PAM 可插拔认证模块介绍
  7. Linux limits.conf 详解与配置
  8. Linux Signal 信号量介绍
  9. Linux GDB 调试
  10. Linux core dump 文件介绍
  11. Linux procfs 介绍
  12. Linux 进程 /proc/PID/status 深入分析
  13. Linux sysfs 介绍
  14. Linux nsswithch.conf 详解
  15. Linux Systemd 介绍(当前)
  16. Linux Interrupt 中断介绍
  17. Linux namespace 介绍
  18. Linux Cgroups 介绍
  19. Linux Capabilities 介绍

systemdLinux 系统的一种 中央化系统及设置管理程序(init),包括有守护进程程序库以及应用软件组成。目标是解决系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低系统的开销。

历史

在旧的 Linux 中,服务启动一直采用 init 进程。如:

$ /etc/init.d/apache2 start
$ service apache2 start

缺点如下:

  • 启动时间长:串行启动进程
  • 启动脚本复杂:init 进程只是执行启动脚本,不管其他事情,因此脚本需要处理各种异常情况

介绍

Unix 中通常以 d 作为系统 守护进程(daemon) 的后缀标识。Systemd 就是它要守护整个系统的进程,因此其 pid1

$ systemctl --version
systemd 215
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
$ pstree 1
systemd─┬─AliSecGuard───6*[{AliSecGuard}]
        ├─AliYunDun───23*[{AliYunDun}]
...

使用

systemctl

systemd-analyze

# 查看启动耗时
$ systemd-analyze

# 查看每个服务的启动耗时
$ systemd-analyze blame

# 显示瀑布状的启动过程流
$ systemd-analyze critical-chain

# 显示指定服务的启动流
$ systemd-analyze critical-chain atd.service

hostnamectl

# 主机的信息
$ hostnamectl

# 设置主机名
$ hostnamectl set-hostname cn-xiexianbin

loginctl

# 查看当前登录的用户
$ loginctl list-sessions
$ loginctl list-users
$ loginctl show-user root

journalctl

journalctl 用于管理日志

  • 配置文件:/etc/systemd/journald.conf
  • 服务:systemctl status systemd-journald.service
# 查看启动所有日志
$ sudo journalctl

# 查看内核日志
$ sudo journalctl -k

# 查看本次启动的日志
$ sudo journalctl -b

# 查看上一次启动的日志
$ sudo journalctl -b -1

# 查看指定时间的日志
$ sudo journalctl --since="2019-11-16 12:00:00"
$ sudo journalctl --since "10 min ago"
$ sudo journalctl --since yesterday
$ sudo journalctl --since "2019-11-15" --until "2019-11-16 12:00:00"

# 显示最新 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=88 --since today

# 查看某个 Unit 的日志
$ sudo journalctl -u tengine.service
$ sudo journalctl -u tengine.service --since today

# 实时滚动显示某个 Unit 的最新日志
$ sudo journalctl -u tengine.service -f

# 合并显示多个 Unit 的日志
$ journalctl -u tengine.service -u chrony.service --since today

日志 Suppressed 问题

Nov 16 10:21:14 cn-xiexianbin journal: Suppressed 1422 messages from /system.slice/tengine.service

解决方法:

  • 修改 /etc/systemd/journald.conf
[Journal]
RateLimitBurst=5000  # 1000
  • 重启服务
systemctl restart systemd-journald.service
专栏文章
  1. Linux 基础知识
  2. chroot 技术简介
  3. Linux 中个目录说明
  4. 进程、线程、协程的作用和区别
  5. Linux 动态链接库和静态链接库
  6. Linux PAM 可插拔认证模块介绍
  7. Linux limits.conf 详解与配置
  8. Linux Signal 信号量介绍
  9. Linux GDB 调试
  10. Linux core dump 文件介绍
  11. Linux procfs 介绍
  12. Linux 进程 /proc/PID/status 深入分析
  13. Linux sysfs 介绍
  14. Linux nsswithch.conf 详解
  15. Linux Systemd 介绍(当前)
  16. Linux Interrupt 中断介绍
  17. Linux namespace 介绍
  18. Linux Cgroups 介绍
  19. Linux Capabilities 介绍
最新评论
加载中...
Home Archives Categories Tags Statistics