2025-01-02 10:46:09 +08:00

4.7 KiB
Raw Blame History

从CentOS7开始使用systemd实现init进程系统启动和服务器守护进程管理器负责在系统启动或者运行时激活系统资源服务器进程和其他进程。

1、Unit类型

unit表示不同类型的systemd对象通过配置文件进行标识和配置文件中主要包含了系统服务、监听socket、保存的系统快照以及其他与init相关的进程

[root@centos ~]#systemctl  -t help
Available unit types:
service   #文件拓展名为.service用于定义系统服务
socket    #定义进程间通信用的socket文件也可在系统启动时延迟启动服务实现按需启动
target    #文件扩展名为.target用于模拟实现运行级别
snapshot  #管理系统快照
device    #用于定义内核识别的设备
mount     #定义文件系统挂载点
automount #文件系统的自动挂载点
swap      #用于表示swap设备
/usr/lib/systemd/system  #每个服务最主要的启动脚本
/lib/systemd/system      #ubuntu的对应目录

/run/systemd/system      #系统执行过程中所产生的服务脚本,比上面的目录优先运行
/etc/systemd/system      #管理员建立的执行脚本,比上面的目录优先运行

2、unit文件格式

/etc/systemd/system系统管理员和用户使用 /usr/lib/systemd/system发行版打包者使用

# /usr/lib/systemd/system/sshd.service
[Unit]定义与unit类型无关的通用选项用于提供unit的描述信息、unit行为及依赖关系等
Description=OpenSSH server daemon  #描述信息
Documentation=man:sshd(8) man:sshd_config(5)
Requires=network.target #依赖到的其他units强依赖被依赖的服务无法激活时当前unit也无法激活
After=network.target sshd-keygen.service  #定义unit的启动次序表示当前unit应该晚于哪些unit启动
Wants=sshd-keygen.service   #依赖到的其他units弱依赖

[Service]:与特定类型相关的专用选项
Type=notify #定义影响ExecStart及相关参数的功能的unit进程启动类型
  	simple默认值这个daemon主要由ExecStart接的指令串来启动启动后常驻于内存中
    forking由ExecStart启动的程序透过spawns眼神出其他子程序来作为此daemon的主要服务。原生父程序在启动结束后就会结束
    oneshot与simple类似不过这个程序在工作完成后就结束了不会常驻在内存中
    dbus与simple相似但是这个daemon必须要在取得一个D-Bus的名称后才会继续运行因此通常要设定BusName=才行
    notify在启动完成后会发送一个通知信息还需要配合NotifyAccess来让systemd接收消息
    idle与simple类似要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行
EnvironmentFile=/etc/sysconfig/sshd   #环境配置文件
ExecStartPre=                        #ExecStart前运行
ExecStartPost=                    #ExecStart后运行
ExecStart=/usr/sbin/sshd -D $OPTIONS    #启动unit要运行命令或脚本的绝对路径
ExecReload=/bin/kill -HUP $MAINPID  
KillMode=process
Restart=on-failure   #失败后会再次自动启动此服务
RestartSec=42s  #重启服务前暂停多长时间

[Install]:定义由"systemctl enbale" 以及"systemctl disable" 命令在实现服务启用或禁用时用到的一些选项
WantedBy=multi-user.target #被那些units所依赖弱依赖
Alias=  #别名
RequiredBy= #被哪些units所依赖强依赖

2、常用命令

[root@centos ~]#systemctl list-units -t service
UNIT                               LOAD   ACTIVE SUB     DESCRIPTION
acpid.service                      loaded active running ACPI Event Daemon
atd.service                        loaded active running Job spooling tools
auditd.service                     loaded active running Security Auditing Service
ccsp.service                       loaded active running fraps service
cloud-config.service               loaded active exited  Apply the settings specified in cloud-config
cloud-final.service                loaded active exited  Execute cloud user/final scripts

[root@centos ~]#systemctl list-unit-files -t service 
UNIT FILE                                     STATE   
abrt-ccpp.service                             disabled
abrt-oops.service                             disabled
abrt-pstoreoops.service                       disabled
abrt-vmcore.service                           disabled

loadedunit配置文件已处理
activerunning 一次或多次持续处理的音响
activeexited成功完成一次性的配置
activewaiting运行中等待一个事件
inactive 不允许
enbaled 开机启动
disabled 开机不启动
static  开机不启动,但可以被另外一个启动的服务激活
indirect 重定向到别处