前言:Centos7.x以后,Red Hat系列的distribution放弃了init启动脚本的方式,改用了systemd这个启动服务管理机制,但并不能完全代替init,所以init的脚本并没有去掉
-
相对于init的优缺点:
优点 :
- 平行处理所有服务,加速开机流程
- 只需要一个命令systemctl来管理
- 服务相依性的自我检查,例如:服务B是架构在服务A上面启动的,但当你启动B服务是,systemd会自动帮你启动A服务
- 以daemon功能分类,systemd将服务单位区分为:service,socket,target,path,snapshot,timer等多种不同的类型,方便管理员分类和记忆
- 将多个daemon集合成为一个群组,systemd将许多功能集合成一个所谓的target项目,所以执行某一个target就是执行多个daemon
- 向下兼容旧的init服务脚本
缺点 :
- systemd没有完全对应init的runlevel(执行等级)
- 不可自定义参数
- 手动启动的服务systemd无法检测到
- systemd启动过程中,无法与管理员通过standard input传入讯息
-
systemd 的配置文件放置目录
- /usr/lib/systemd/system/ : 每个服务最重要的启动脚本设定,类似与以前的/etc/init.d
- /run/systemd/system/ : 系统执行过程中产生的服务脚本,其优先级要比/usr/lib/systemd/system高
- /etc/systemd/system/ : 管理员依据主机系统的需求所建立的执行脚本,类似于以前的/etc/rc.d/rc5.d/Sxx 之类的功能,优先级有比/run/systemd/system要高!
也就是说系统开机到底会不会执行某个服务是看/etc/systemd/system底下的设定的,而其启动的设定是由/usr/lib/systemd/system/决定的
-
systemd的unit类型分类
/usr/lib/systemd/system/下的数据不同类型:
扩展名 主要服务功能 .service 一般服务类型,主要是系统服务,包括服务器本身需要的本地服务以及网络服务都是,是常见的类型 .socket 内部程序数据交换的插槽服务 .target 执行环境类型,其实是一堆服务的集合 .mount .automount 文件系统挂载相关的服务,如:来之网络的自动挂载,NFS文件系统的挂载等与文件系统相关性较高的程序管理 .path 侦测特定文件或目录类型,打印服务会用到 .timer 循环执行的服务