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启动时的工作目录不是原路径,相对路径失效了。。。

未完待续。。。。