当写一个linux服务后,通常我们还要写三个功能:
1、守护进程,防止由于自己的失误,程序挂了。
2、设置开机启动,用来保证设备重启后,能随着设备重启而运行。
3、日志管理,用户保证定时滚动保存程序的标准输出与标准错误。
有些第三方工具能自动管理程序,如pm2,但是pm2是基于nodejs开发的,运行它需要安装nodejs环境。
今天介绍一个主流linux自带的工具,叫做systemd,systemd常用命令如下:
1、设置ipset这个服务开机启动
systemctl enable ipset
2、取消ipset这个服务开机启动
systemctl disable ipset
3、启动ipset这个服务
systemctl start ipset
4、关闭ipset这个服务
systemctl stop ipset
5、重启ipset这个服务
systemctl restart ipset
6、查看ipset服务的状态
systemctl status ipset
创建一个新的systemd服务的方法,创建一个名为ipset.service的文件,内容如下:
#建议将主文件放到/usr/local/bin #配置文件存放在/usr/local/etc下 #数据库文件存放在/var/local下 #编辑好后请将本文件命名为xxx.service,然后存放到/etc/systemd/system目录下 #查看运行日志的方法为journalctl -u ipset [Unit] Description=ipset #代表本服务在xxx.service启动之前启动 #Before=xxx.service #代表本服务在xxx.service启动之后启动 #After=xxx.service #该服务依赖的其他服务或目标。如果指定的服务或目标未能启动,本服务也不会启动 #Requires=xxx.service [Service] Type=simple ExecStart=/usr/local/bin/ipset eth0 #表示服务运行路径,可以不添加 #WorkingDirectory=/ #这里也可以设置成no或always,默认是no Restart=on-failure #当Restart不为no时生效 RestartSec=5 [Install] WantedBy=multi-user.target
然后将ipset.service放到/etc/systemd/system目录下,然后就能用之前介绍的命令。
看运行日志的方法为journalctl -u ipset
如果是要创建的是模板单元,需要将文件名最后添加@,比如ipset@.service,然后同样放到/etc/systemd/system目录下
ipset@.service需要添加%I,调用时添加@并在后面添加词,执行时会替代文档中的%I,比如:
#建议将主文件放到/usr/local/bin #配置文件存放在/usr/local/etc下 #数据库文件存放在/var/local下 #编辑好后请将本文件命名为xxx.service,然后存放到/etc/systemd/system目录下 #如果创建的是模板单元,需要将文件名尾部添加@,也就是xxx@.service #@后面的参数会用%I替换,如systemctl enable ipset@end1,会替换%I后链接到另一个文件夹 #查看运行日志的方法为journalctl -u ipset@end1 [Unit] Description=ipset #代表本服务在xxx.service启动之前启动 #Before=xxx.service #代表本服务在xxx.service启动之后启动 #After=xxx.service #该服务依赖的其他服务或目标。如果指定的服务或目标未能启动,本服务也不会启动 #Requires=xxx.service [Service] Type=simple ExecStart=/usr/local/bin/ipset %I #表示服务运行路径,可以不添加 #WorkingDirectory=/ #这里也可以设置成no或always #默认是no Restart=on-failure #当Restart不为no时生效 RestartSec=5 [Install] WantedBy=multi-user.target
调用方法为在@后面添加词,如systemctl start ipset改为systemctl start ipset@eth0
看运行日志的方法也要改为journalctl -u ipset@eth0
在ipset.service文件内,可以设置程序自己挂了后自动重启,可以通过systemctl enable设置开机启动,它也自带日志管理。
关于ipset.service的详细内容,可以参考传送门1,传送门2,传送门3,传送门4
文章作者:沃航科技