欢迎光临
我们一直在努力

crontab 使用日期时间命名重定向文件&文件保存位置&日志文件保存位置

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

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

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

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

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

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

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

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

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

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

使用月份命名

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

使用周命名

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

使用小时命名

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

Linux查看cron文件位置:

/var/spool/cron/ 目录中保存了,每个用户crontab文件。

Linux查看cron日志文件保存位置:

默认情况下,crontab中执行的日志写在/var/log下,如:

#ls /var/log/cron*
/var/log/cron /var/log/cron.1 /var/log/cron.2 /var/log/cron.3 /var/log/cron.4

crontab的日志比较简单,当crond执行任务失败时会给用户发一封邮件。恰巧在我们的一台服务器上发现一个任务没有正常执行,而且crond发邮件也失败了。通过看mail的日志,看到是磁盘空间不足造成的。
可以将每条 crontab中的任务增加自己的日志,有利于查找执行失败原因。

0 6 * * * //root/script/ss.sh >> /root/for_crontab/mylog.log 2>&1

把错误输出和标准输出都输出到mylog.log中。

如crontab 没有成功,检测crontab 服务是否启动,

/etc/init.d/crond status 

/etc/init.d/crond restart

cron 是系统守护进程,位置:
/etc/init.d/crond
参数:

start
stop
restart
reload
等等
赞(0)
未经允许不得转载:飘云 » crontab 使用日期时间命名重定向文件&文件保存位置&日志文件保存位置
分享到: 更多 (0)