快速开始你的第一个Systemd守护文件
引言
systemd是Linux电脑操作系统之下的一套中央化系统及设置管理程序(init),包括有守护进程、程序库以及应用软件,由Lennart Poettering带头开发。其开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,最终代替现在常用的System V与BSD风格init程序。(From Wikipedia)
简单地讲,使用了 Systemd,就不需要再用init了。Systemd 取代了initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。
创建守护进程文件
比如你写了一个Linux Shell脚本,绝对路径为
1 | /home/script/my.sh |
你想要守护它的运行
创建守护进程文件
1 | vim my.service |
守护进程文件必须要是.service
后缀的
输入
1 | [Unit] |
这样一来就好了
来简单解释一下配置的意义
Description
项是一个简要说明
Type
项表明服务的类型,简单就是直接执行ExecStart
的命令
ExexStart
是守护进程开始时执行的命令
Restart
设置为“总是”,以保证该进程不会被杀死
WantedBy
设置multi-user.target
保证了systemctl enable my
能成功的把服务加入开机自启动
注意,Exec命令中必须是绝对路径
注册到系统执行命令
先将守护进程配置文件拷贝到/lib/systemd/system/
1 | cp my.service /lib/systemd/system/ |
设置开机自启动(可省略.service
后缀)
1 | systemctl enable my |
使用
启动服务
1 | systemctl start my |
停止服务
1 | systemctl stop my |
重启服务
1 | systemctl restart my |
查看服务情况
1 | systemctl status my |
完成
这样一来,my.sh
就被系统所守护,重启之后也不会失效。
设置完成后,可以修改my.sh
以实现各种功能。