我想知道是否有一种简单的方法来安排在 Linux 服务器上运行的应用程序(例如 OpenVPN)每 4 天在特定时间自动重启一次。
谢谢
答案1
使用 cron。在 /etc/cron.d 中放置一个包含以下行的文件:
0 0 */4 * * 命令_to_restart_openvpn
答案2
您可以创建一个cron
每天运行的作业,检查date +%s
除以24*60*60
(一天的秒数)的余数是否是四的倍数。如果不是,则退出。
#!/bin/bash
if (( $(date +%s) / (60*60*24) % 4 != 0 )); then exit; fi
或者
#!/bin/sh
if [ $(($(date +%s)/(60*60*24)%4)) != 0 ]; then exit; fi
您可以将“0”更改为 1、2 或 3,以影响四天周期中的哪一天是触发日。如上面第一个链接所述,这不考虑闰秒。
或者您可以让脚本执行其操作,然后将自身排队再次运行at now + 4 days
(您可以指定开始时间而不是“现在”:at 9:00 + 4 days
以防止时间蔓延)。
答案3
我有一个需要每 20 天运行一次的应用程序。为此,我使用一个脚本来检查标志文件的时间戳(如果不存在则创建它)。如果该文件在不到 20 天前被修改,则脚本退出。如果没有,它会“触摸”标志文件以将其时间戳重置为现在并调用需要运行的应用程序。该脚本作为每日 cron 作业运行。
答案4
如果真的是这样那每 4 天获取一次很重要,在启动时运行此脚本(适应您的本地需求):
#!/bin/bash
service openvpn start
while sleep $((60 * 60 * 24 * 4)); do
service openvpn restart
done
但是您可能会发现,按照 Dennis 的建议,通过 cron 重新启动它,您的生活会变得更好。