每次运行cron作业时都会生成新的日志文件

时间:2014-10-28 22:56:14

标签: logging cron crontab

我已经想出了如何使用>>将cron作业输出到日志文件并提供日志文件的路径。 >>将日志信息附加到现有文件。我怎样才能使cron作业每次运行时都创建一个新的日志文件? (即rsync.logrsync(1).logrsync(2).log - 理想情况下,我希望日志的文件名类似于DD-MM-YY.log)。

我想要一个单独的日志文件,所以这个日志文件不会变得如此庞大,如果/当我们去查看文件/文件夹是否成功备份时(我在运行rsync命令时) cron job)我们不必梳理MASSIVE日志文件。

此外,当cron作业输出到日志文件时,没有时间/日期引用。我的第一个日志输出示例:

**sending incremental file list**
**sent 78 bytes  received 11 bytes  35.60 bytes/sec**
**total size is 0  speedup is 0.00**

那就是它。每次运行作业时,此日志文件的时间戳都会不断变化,因此我们甚至无法确定通过rsync复制特定文件/文件夹的日期。如果我每次运行cron作业时都有一个单独的日志文件,我可以打开日志文件,查看它创建的特定日期并查看备份的内容。

我目前的cronjob:

*/1 * * * * rsync -avz /home/me/test/ 1234@xxx-a123.rsync.net:test/ >>/home/me/cron_logs/homedir_backups/rsync.log 2>&1

我只将它设置为1分钟用于测试目的。最终这只会在午夜每天运行。

1 个答案:

答案 0 :(得分:3)

如果您需要带时间戳的日志,请添加格式化日期命令的字符串, 日期+%d%y%m表示日期年份的数字格式。

您可以使用反引号将字符串放入cron:

~$ /home/me/cron_log-`/bin/date +%d-%m-%y`

因此文件名将附加当前日期。反引号说"运行此命令并将输出作为字符串输入#34;。

现在的问题是您的目录可能会变得很大,然后您必须编写一个简短的脚本来按时删除它们。我有一个脚本读取格式并保留X并删除其余的,但大多数人只会使用" find"按时间删除旧的东西,比如有mtime>的日志1年。