初探systemd(在systemd中添加自定义服务)

因为需要将frpc在树莓派中自动启动,一种方法可以通过在/etc/rc.local中添加运行frpc命令实现,但是我们不这样做,我们这次要采用极为好用的systemd,增加自定义服务并将服务设置为自动启动。

而systemd 的配置文件大部分放置于 /usr/lib/systemd/system/ 目录内。但是官方文件指出, 该目录的文件主要是原本软件所提供的设置,建议不要修改!而要修改的位置应该放置于 /etc/systemd/system/ 目录内。举例来说,如果你想要额外修改 vsftpd.service 的话, 他们建议要放置到哪些地方呢?

  • /usr/lib/systemd/system/vsftpd.service:官方释出的默认配置文件;
  • /etc/systemd/system/vsftpd.service.d/custom.conf:在 /etc/systemd/system 下面创建与配置文件相同文件名的目录,但是要加上 .d 的扩展名。然后在该目录下创建配置文件即可。另外,配置文件最好附文件名取名为 .conf 较佳! 在这个目录下的文件会“累加其他设置”进入 /usr/lib/systemd/system/vsftpd.service 内。
  • /etc/systemd/system/vsftpd.service.wants/*:此目录内的文件为链接文件,设置相依服务的链接。意思是启动了 vsftpd.service 之后,最好再加上这目录下面建议的服务。
  • /etc/systemd/system/vsftpd.service.requires/*:此目录内的文件为链接文件,设置相依服务的链接。意思是在启动 vsftpd.service 之前,需要事先启动哪些服务的意思。

1.在这里我们是需要新建一个服务,于是我直接将其放在/usr/lib/systemd/system/ 目录内,在该目录中新建一个名为frpc.service的文件。

2.编辑该文件,内容如下:

[Unit]
Description=frp Client

[Service]
ExecStart=/usr/bin/frpc -c /usr/local/etc/frpc.ini
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -9 $MAINPID
Restart=on-failure
RestartSec=20s

[Install]
WantedBy=multi-user.target

其中ExecStart为其在启动(start)该服务时需要执行的命令行(命令+参数).

ExecReload是一个可选的指令, 用于设置当该服务被要求重新载入配置时所执行的命令行.

ExecStop是一个可选的指令, 用于设置当该服务被要求停止时所执行的命令行.

需要注意的是,这里命令行中必须使用绝对地址。

其中环境变量$MAINPID为主程序的PID。 kill -HUP PID为重新读取配置文件而不关闭重启程序,kill -9 PID为强制关闭进程。

3.输入systemctl enable frpc.service 将该服务设置为自动启动,开机启动成功即可,值得一提的是必须要设置RestartSec,否则的话自动启动会一直失败。

参考资料:http://www.jinbuguo.com/systemd/systemd.service.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值