Zihao

Make small but daily progress

0%

Crontab使用日期时间命名重定向文件

Linux crontab命令可以实现定时执行任务,最小的执行周期是1分钟

例:每天12点执行test.PHP,执行的输出会追加到test.log文件

1
0 12 * * * php /Users/fdipzone/test.php >> /Users/fdipzone/test.log 2>&1

2>&1 表示把标准错误输出重定向到与标准输出一致,即test.log

每天12点都执行一次,当天的输出就会追加到test.log文件。如果运行了一段很长的时间(如1年),test.log文件的内容则会很大。这样不方便查看对应日期的输出记录。

因此我们需要一个方法,可以按不同时段写入不同的日志文件,例如每日,每周,每月使用一个日志文件(具体根据不同的需求定义)这样就可以方便搜寻。

例:每天12点执行,使用当天日期来命名重定向文件

1
0 12 * * * php /Users/fdipzone/test.php >> "/Users/fdipzone/$(date +"\%Y-\%m-\%d").log" 2>&1

2016-06-06 执行的,会追加入/Users/fdipzone/2016-06-06.log
2016-06-07 执行的,会追加入/Users/fdipzone/2016-06-07.log

这样可以很方便找到对应日期的定时任务执行日志

如果每天创建的日志内容不多,我们可以使用月份/周为日志命名。如果日志内容很多也可以按小时来命名,以下提供不同时段的命名重定向文件实例。

使用月份命名

1
0 12 * * * php /Users/fdipzone/test.php >> "/Users/fdipzone/$(date +"\%Y-\%m").log" 2>&1

使用周命名

1
0 12 * * * php /Users/fdipzone/test.php >> "/Users/fdipzone/$(date +"\%Y-W\%W").log" 2>&1

使用小时命名

1
* * * * * php /Users/fdipzone/test.php >> "/Users/fdipzone/$(date +"\%Y-\%m-\%d_\%H").log" 2>&1

2017年05月18日16:30:46

总见人问 怎么设置crontab 每分钟定时执行之类的问题 ,今天我就贴了上来方便大家使用,会的同学就飘过吧不会的就留个脚印。

1
2
3
4
5
6
每五分钟执行    */5 * * * *
每小时执行 0 * * * *
每天执行 0 0 * * *
每周执行 0 0 * * 0
每月执行 0 0 1 * *
每年执行 0 0 1 1 *
  • 本文作者: Zihao Yao
  • 本文链接: https://yaozihao.com/linux_crontab/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

欢迎关注我的其它发布渠道