systemd 之笔记

在这之前 ,对与linux 的系统中的很多管理已经有意无意的用到了systemd,但是没有系统的学习.昨天花了一点时间系统的了解了,systemd的一些功能并做了简单的测试.systemd一直广受争议.其中是非曲直甚多,不作评述,但是本人觉得撇开这些不谈,systemd本身还是很好用的一个东西.

systemd是系统内核加载后的第一个进程,其pid为1,它负责启动其他的所有的进程.我们通过pstree命令可以看出来.它管理linux系统的所有资源,包括service dev timer path mount等等,这也是它广受争议的地方.systemd把系统的每一个资源用一个unit来标记.也就是说一个系统的资源就是一个unit. 多个unit可以组成target,target是unit的打包集合.因此,若干系统启动项打包到一起,就组成了系统的运行级别,也就是之前的runlevel. 在systemd中,这写分别对应到graphcial.target, multiuser.target等等上去了.所有我们要将某个服务项设置为开机启动,我们只需要在对应的target包中添加服务项就可以了.但是通常不是直接添加,而是通过

systemctl enable <服务>

指令,这会在对应(此处的对应会在服务项的配置文件中声明)的运行target中添加一个软链接.

或者我们可以通过

systemctl start[stop restart status] <服务> 

来即时启动/停止/重启/状态查询 一个服务项.

也可以通过

systemctl enable[disable] <服务名>

来配置一个服务是否开机启动,如果配置成enable,那么systemd会根据<服务名>文件中的[Install] 字段,在相应的启动target中创建软连接指向该服务.

我们可以自己编写服务项.最常用的是编写.service 和.timer. 编写的方式网上其他教程很多,但是这里我需要说明的一点是: systemd不支持”>   >>   <   <<    | “等重定向和管道符,这是我测试的时候踩坑的地方.另外,[Service]字段中的Type如果不是oneshot类型,那么ExecStart的参数有且仅能有一个命令.

官网的英文参考手册倒是很可靠,但是看着麻烦,这里有一个中译版本,可以参考.

发表评论

电子邮件地址不会被公开。 必填项已用*标注