我想知道是否有一种简单的方法来安排在Linux服务器上运行OpenVPN等应用程序,以便在特定时间每4天自动重新启动一次。
谢谢
使用cron。 在/etc/cron.d中放置一个包含以下行的文件:
0 0 * / 4 * * command_to_restart_openvpn
看到这个答案 , 这一个 。
您可以创build一个每天运行的cron作业,并检查除以24*60*60 (一天中的秒数)的除数date +%s的余数是否为四的倍数。 如果不是,则退出。
#!/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,以影响四天周期中的哪一天是您的触发date。 正如在上面的第一个链接中指出的那样,这并没有考虑到闰秒。
或者你可以让你的脚本做它的事情然后排队自己再次运行at now + 4 days (而不是“现在”,你可以指定一个开始时间: at 9:00 + 4 days以防止时间蠕变)。
如果每隔4天确定一次,请在启动时运行此脚本(以适应当地的需要):
#!/bin/bash service openvpn start while sleep $((60 * 60 * 24 * 4)); do service openvpn restart done
但是你可能会发现,如丹尼斯所说,通过cron重新启动它,你的生活会更好。
我有一个需要每20天运行的应用程序。 为此,我使用一个脚本来检查标志文件的时间戳(如果它不存在,就创build它)。 如果该文件被修改less于20天前脚本退出。 如果不是,则“触及”标志文件以重置其时间戳到现在并调用需要运行的应用程序。 该脚本作为每日cron作业运行。