在Linux上执行定时任务第一想到的就是crontab,cron有灵活的设置时间范围,一般定时程序都使用该服务。
![ceff315cc8bc0da460c750ec0d58877a.png](https://i-blog.csdnimg.cn/blog_migrate/e75297a81555c8cab674acefe665f8fc.jpeg)
上图比较清晰的给出了取值范围,还是比较容易上手的,现在有个程序需要每30天自动运行一次,很明显使用crontab是无法直接实现,需要编写一个shell配合crontab来实现。
方法1:
#!/bin/bashseconds=$((30*24*3600))while true;do/bin/bash /home/run/setup.shsleep $secondsdone
方法2:
#!/bin/bashlast_run_time=1562250025cur_run_time=`date +%s`seconds=$((30*24*3600))if [[ $((cur_run_time - last_run_time)) -gt $seconds ]]then/bin/sh /home/setup.shsed -i '2 s/[0-9][0-9]*/"$cur_run_time"/' /home/setup.shfi
然后把该脚本加载crontab中运行。