一、Systemd说明
在Linux系统引导之后,内核检测完硬件,会启动一个PID为1的进程,即/sbin/init,Systemd作为/sbin/init的符号链接,完成系统的初始化和服务的启动。
# ls -l /sbin/init
lrwxrwxrwx. 1 root root 22 12月 16 11:03 /sbin/init -> ../lib/systemd/systemd
现在,大多数主流发行版本都使用Systemd,从而消除了不同发行版本之间细微的区别。Systemd提供了11种不同的单元(unit)类型,其中封装了与系统启动和维护相关的各种对象,参考Systemd。使用Systemd可以完成包括进程管理和CGroup监视,各个进程之间依赖关系的控制,挂载点的维护,设备维护,进行简单的网络配置,查看登录用户,查看进程、脚本日志等功能。
systemctl
是用户与Systemd交互的工具,使用它可以完成以上各种功能的操作;
journalctl
用来查看各个服务与进程的日志。
二、单元类型
- Service unit:系统服务;
- Target unit:多个Unit构成的一个组;
- Device Unit:硬件设备;
- Mount Unit:文件系统的挂载点;
- Automount Unit:自动挂载点;
- Path Unit:文件或路径;
- Scope Unit:不是由Systemd启动的外部进程;
- Slice Unit:进程组;
- Socket Unit:进程间通信的socket;
- Swap Unit:swap文件;
- Timer Unit:定时器。
三、查看系统状态
3.1、状态总览
当前进程状态总览:
# systemctl status
列出所有单元:
# systemctl list-units
列出所有单元文件,即所有安装的服务。所有可用的单元文件存放在/usr/lib/systemd/system/和/etc/systemd/system/(优先级更高)目录下:
# systemctl list-unit-files
列出运行失败的单元:
# systemctl --failed
3.2、单元管理
重新加载Systemd系统配置:
# systemctl daemon-reload
重新加载单元配置:
# systemctl reload <unit>
将单元设置为开机自启动:
# systemctl enable <unit>
查看单元是否被设置为开机自启动:
# systemctl is-enabled <unit>
取消单元的开机自启动:
# systemctl disable <unit>
将单元设置为开机自启动并立即启动该单元
# systemctl enable --now <unit>
启动单元:
# systemctl start <unit>
查看单元的运行状态:
# systemctl status <unit>
停止正在运行的单元:
# systemctl stop <unit>
四、单元文件加载路径
单元文件将会从指定路径中加载。下表列出了运行在系统模式下的单元文件的加载路径,顺序由上自下,不同路径下的同名文