您好,欢迎访问沃航(武汉)科技有限公司官方网站
使用systemd管理自己创建的服务方法
2025-01-16 00:40:58

当写一个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


文章作者:沃航科技


联系我们
地址:
武汉市洪山区蓝晶国际7栋903
QQ:
932773931
电话:
027-59761089-806
手机:
13397158231
邮箱:
jevian_ma@worldflying.cn
×
物联网组态平台
试用账号:123456
试用密码:123456
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn
×
积木编程平台
试用方式:试用手机号码注册即可使用
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn