每次cron作业运行时都有新的日志文件

00f*_*ruX 4 cron logging crontab

我已经弄清楚了如何使用cron作业>>并将其提供到日志文件的路径来将cron作业输出到日志文件。在>>附加信息记录到现有的文件。如何使cron作业每次运行都创建一个新的日志文件?(即rsync.logrsync(1).logrsync(2).log-尽管理想我想日志的文件名是这样的DD-MM-YY.log)。

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

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

**sending incremental file list**
**sent 78 bytes  received 11 bytes  35.60 bytes/sec**
**total size is 0  speedup is 0.00**
Run Code Online (Sandbox Code Playgroud)

而已。每次运行作业时,此日志文件上的时间戳都会不断更改,因此我们甚至无法得知通过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
Run Code Online (Sandbox Code Playgroud)

为了测试目的,我仅将其设置为1分钟。最终,该操作只会每天在午夜运行。

小智 5

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

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

~$ /home/me/cron_log-`/bin/date +%d-%m-%y`
Run Code Online (Sandbox Code Playgroud)

因此,文件名将附加当前日期。反引号表示“运行此命令并将输出作为字符串放在这里”。

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