systemctl管理常驻服务

大家基本都与systemctl打过交道,它是现在linux主流的进程管理工具,只有在比较新的linux发行版中才会存在。

大家可以通过阮一峰的《Systemd入门教程》系统的了解一下这套工具的原理和用法。

我这里记录一下最基本的用法,可以实现利用systemd来监督一个服务端程序,一旦服务进程宕机就会自动重新拉起进程。

配置service

对于systemd来说,每个服务配置都是一个单元,叫做Unit。

常驻服务是一个类型为service的unit单元,我们编辑文件:/usr/lib/systemd/system/mysrv.service,后缀.service是一定要写的,这样systemd才知道我们配置的是一个service unit:

配置分3个段落:

  • Unit:该unit依赖哪些其他的unit。
  • Service:配置启动/停止服务的配置和命令。
  • Install:该unit被哪些unit依赖,用途是借助系统默认加载的unit来拉起我们的unit。

target是若干unit的集合,上述用到的target都是systemd内置的。

上述配置描述了:我们的服务在正常开机后被加载,需要等待网络初始化成功,才能启动进程。

生效

执行命令:

执行上述命令,将把service配置文件链接到/etc/systemd/system/multi-user.target.wants/mysrv.service,从目录结构可以看出其表达的意思是multi-user.target依赖了哪些模块。

当开机后multi-user.target这个unit集合被systemd默认拉起,就会顺带拉起我们的mysrv.service。

查看

执行下述命令查看服务是否启动:

启动服务

现在开机会自动启动我们的服务,也可以主动启动:

停止服务

自动拉起

因为systemd监督了我们进程的死活,所以kill杀死进程后,服务进程会立即被重新拉起。

修改unit配置

如果需要修改unit配置,那么修改完成后需要让systemd重新加载配置,否则不会生效:

 

 

 

如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~