cron 如何根据日期输出到新的日志文件?
Posted
技术标签:
【中文标题】cron 如何根据日期输出到新的日志文件?【英文标题】:How can cron output to a new log file based on date? 【发布时间】:2015-02-16 19:08:51 【问题描述】:我想将 cron 输出记录到一个过时的文件中 — /tmp/log/cron-2014-12-17.log
$ mkdir /tmp/log
$ chmod 777 /tmp/log
$ ls -lah /tmp/log
drwxrwxrwx 2 root root 4.0K Dec 17 21:51 .
Cron(通过 root
用户)
* * * * * /usr/bin/php /path/to/script.php > /tmp/log/cron-$(date "+%F").log 2>&1
/tmp/log
每分钟后都为空。
如果我从命令行手动运行脚本,则会创建一个日志文件,并且输出符合预期。
// Running it manually as a CLI works fine, but not as a cron
$ /usr/bin/php /path/to/script.php > /tmp/log/cron-$(date "+%F").log 2>&1
另外,如果我创建一个文件并 chmod 777 它,cron 将 将输出写入这个创建的文件。它只是不会即时创建一个。
// Let's create it first
$ touch /tmp/log/cron.log
$ chmod 777 /tmp/log/cron.log
// wait for the next minute...
$ tail -f /tmp/log/cron.log
output... output... output...
但这不适用于像 /tmp/log/cron-2014-12-17.log
这样的动态名称。
我错过了什么?
【问题讨论】:
Append current date to the filename via Cron?、Sending cron output to a file with a timestamp in its name、How to add the logs to a crontab with time stamp、How to log cron jobs? 等可能重复 【参考方案1】:这将解决您的问题:
0 0 * * * /some/path/to/a/file.php >> /tmp/log/cron-`date +\%F`.log 2>&1
【讨论】:
以上是关于cron 如何根据日期输出到新的日志文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何为crontab日志创建文件夹(如果不存在),并根据日期将日志写入特定文件夹?
杂集:centos7中利用logrotate工具切割tomcat日志