第十一单元 systemd及systemctl实战
systemd的新特性:
系统引导时实现服务并启动;按需激活进程;
系统状态快照;
基于依赖关系定义服务控制逻辑;
核心概念:
unit由其相关配置文件进行标识、识别和配置;文件中主要包含了系统服务、监听的socket、保存的快照以及其它与init相关的信息;这些配置文件主要保存在:/usr/lib/systemd/system
/run/systemd/system
/etc/systemd/system
unit的常见类型:
service unit:文件扩展名为.service,用于定义系统服务
Target unit:文件扩展名为.target,用于模拟实现“运行级别”
Device unit:文件扩展名为.device,用于定义内核识别的设备
Mount unit:文件扩展名为.mount,用于定义文件系统挂载点
Socket unit:文件扩展名为.socket,用于标识进程间通信用到的socket文件
Snapshot unit:文件扩展名为.snapshot,管理系统快照
Swap unit:文件扩展名为.swap,用于标识swap设备
Automount unit:文件扩展名为.automount,文件系统自动点设备
Path unit:文件扩展名为.path,用于定义文件系统中的文件或目录;
关键特性:
基于socket的激活机制:socket与程序分离;基于bus的激活机制;
基于device的激活机制;
基于path的激活机制;
系统快照;保存各unit的当前状态信息于持久存储设备中
向后兼容sysv init脚本;
不兼容;
systemctl的命令是固定不变的;
非由systemd启动的服务,systemctl无法与之通信
管理系统服务;
centos 7: service类型的init文件
systemctl命令:
systemctl [OPTIONS] COMMAND [NAME]
启动:systemctl start NAME.service
停止:systemctl stop NAME.service
重启:systemctl restart NAME.service
状态:systemctl status NAME.service
条件式重启:systemctl try-restart NAME.service
重载或重启服务:systemctl reload-or-restart NAME.service
重载或条件式重启服务:systemctl reload-or-try-restart NAME.service
查看某服务当前激活与否的状态:systemct is-active NAME.service
查看所有已激活服务:systemctl list-units --type service
查看所有服务(已激活及未激活):systemctl list-units -t service --all
设置服务开机自启:systemctl enable NAME.service
禁止服务开机自启:systemctl disable NAME.service
查看某服务是否能开机自启:systemctl is-enabled NAME.service
禁止某服务设定开机自启:systemctl mask NAME.service
取消此禁止:systemctl unmaksk NAME.service
查看服务的依赖关系:systemctl list-dependencles NAME.service
管理taarget units:
运行级别:
0==>runlevel0.target,poweroff.target
1==>runlevel1.target,rescue.target
2==>runlevel2.target,multl-user.target
3==>runlevel3.target,multl-user.target
4==>runlevel4.target,multl-user.target
5==>runlevel5.target,graphical.target
6==>runlevel6.target,reboot.target
级别切换:systemctl isolate NAME.target
查看级别:systemctl list-units --type target
查看所有级别:systemctl list-units -t target -a
获取默认运行级别:systemctl get-default
修改默认运行级别:systemctl set-default NAME.target
service unit file:
文件通常由三部分组成:
【unit】:定义与unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等;
【service】:与特定类型相关的专用选项;此处为service类型
【install】:定义由“systemctl enable”以及“systemctl disable”命令在实现服务启用或禁用时用到的一些选项;
unit段的常用选项:
Description:描述信息;意义性描述;
After:定义unit的启动次序;表示当前unit应该晚于哪些unit启动;其功能与Before相反;
Requies:依赖到的其它units;强依赖,被依赖的units无法激活时,当前unit即无法激活
Wants:依赖到的其它units;弱依赖
Conflicts:定义unit间的冲突关系;
Service段的常用选项:
Type:用于定义影响ExecStart及相关参数的功能的unit进程启动类型;
类型:
simple:
forking:
oneshot:
dbus:
notify:
idle:
EnvironmentFile:环境配置文件
ExecStart:指明启动unit要运行命令或脚本;
ExecStop:指明停止unit要运行的命令或脚本
Restart:
Install段的常用选项:
Alias:
RequiredBy:被哪些units所依赖
WantedBy:被哪些units所依赖
注意:对于新创建的unit文件或修改的unit文件,需要通知systemd重载此配置文件;
# systemctl daemon-reload