linux定时任务
Linux定时任务
背景:寒假在家看到必应每日的壁纸不错,加上在学golang想练手,萌生了把每日壁纸收藏的想法。简单分析后搞定,通过ticker每24小时执行一次任务。一直执行了180+天一切正常。之后莫名panic(tail了下nohup的日志,没看出来….)。一直懒得找原因,于是打算改为Linux定时任务。
cron
简介
cron是Linux系统自带(各发行版均有)的一个定时任务执行工具。通过 ps aux|grep crond
可以看到对应的进程。由此也可以了解到此进程为守护进程。
简单使用
crontab -l
命令可列出已经设置当前的任务。
crontab -e
用于编辑计划任务:
按照 分 时 日 月 星期 任务
的格式指定在对应时间执行相应的任务。
对于日期格式的指定:
- “*“表示每一
- “,“表示并列多个时间
- “-” 指连续,例如你可以设置
20-40
则表示在20,40]都执行一次共21次 - “/“整除
- “L” 年的最后月/月的最后一天
除此之外,日期设置上也可以使用缩写:MON,JUL…等
例如:你可以使用通过 crontab -e
并设置内容 " * * * * * echo `date` » $HOME/date.txt "
来指定每分钟输出一次日期并追加到文件 date.txt中。
补充:
- */2 <==>0/2 ,0,2,4,6…
- 1/2 则表示减去1能整除2,即1,3,5,7 …
更多参考 man page
一个坑:虽然不能算是cron
从cron启动时的工作目录不是原路径,相对路径失效了。。。
未完待续。。。。
- Author: DY
- Link: http://4fan.top/posts/linux%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1/
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.