使用systemd配置一个服务再开机后5分钟再启动

2023-05-16

原因:我们的linux服务器上可能会有许多服务要启动,如果再开机后要立即启动的服务过多,很可能会造成开机速度过慢,这时可以对不同的服务进行时间安排,有序的延迟一部分服务的启动。

这里以透传软件 frpc.service 为例。

一、单配置文件的实现模式

也就是直接对frpc.service进行配置

cat /etc/systemd/system/frpc.service
[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
# 下面两行设定了再开机后300秒再启动服务
TimeoutStartSec=infinity
ExecStartPre=/bin/sleep 300

Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frpc -c /etc/frp/frpc.ini
ExecReload=/usr/bin/frpc reload -c /etc/frp/frpc.ini
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

二、利用额外的timer服务实现

这样做的好处是,可以额外增加一项设定,配置服务再持续运行24、48小时后重启一次,用于不关机,但需要对某个服务进行定期重启的情况。

1. 对 frpc.service 进行修改

cat /etc/systemd/system/frpc.service
[Unit]
Description=Frp Client Service

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frpc -c /etc/frp/frpc.ini
ExecReload=/usr/bin/frpc reload -c /etc/frp/frpc.ini
LimitNOFILE=1048576

注意,这里的frpc.service 中没有 [Install] 这一部分的设置!!!

2.新建一个用于启动frpc.service的timer

cat /etc/systemd/system/frpc.timer

[Unit]
Description=timer for frpc service

[Timer]
OnBootSec=5min
OnUnitActiveSec=24h

[Install]
WantedBy=timers.target

这里设定了frpc.service 在开机后5分钟再启动,并且运行24小时后重启一次

3. 启动相关的服务

systemctl disable frpc.service   # 如果frpc.service 之前不是enable状态,则不需要这一步
systemctl start frpc.timer
systemctl enable frpc.timer

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用systemd配置一个服务再开机后5分钟再启动 的相关文章

随机推荐