在 crontab 中,我安排了一个每日备份脚本。现在,当 cron 执行脚本时,状态将记录到日志文件中,如下所示。
0 0 * * * /home/backup.sh > /home/groupz/db-backup/fbackup.log 2>&1
现在,当 cron 执行脚本时,日志的内容每次都会更新。因此,我希望将内容添加到同一个文件中,并带有执行时间的时间戳,以及每次内容与现有内容的下方。我该怎么做呢?
答案1
为什么不只是
0 * * * * (/bin/date && /home/backup.sh) >> /var/log/backup.log 2>&1
答案2
如何获取文件中的时间戳
要在文件中添加时间戳,您可以使用date
查看man date
更多详细信息。例如,如果您在终端中使用,您将获得类似以下输出:
$ date +%d-%m-%y/%H:%M:%S
19-12-13/09:14:42
输出格式为dd-mm-yy/hour:min:sec
如果你希望将时间戳放入文件中,请使用
date +%d-%m-%y/%H:%M:%S > filename
重定向
如果您使用,date +%d-%m-%y/%H:%M:%S > filename
则日期将存储在文件中,但每次使用该命令时都会被覆盖。要将其附加到现有文件中,请使用,
date +%d-%m-%y/%H:%M:%S >> filename
它会将最后的执行输出添加到现有文件的末尾。
在您的案例中您会做什么
您可以在末尾添加以下行/home/backup.sh
,
date +%d-%m-%y/%H:%M:%S
并在 crontab 中使用以下命令,
0 0 * * * /home/backup.sh >> /home/groupz/db-backup/fbackup.log 2>&1
我认为上述修改应该可以满足您的要求。
答案3
(在 Debian Jessie 上)使用软件包ts
中的命令moreutils
。例如:
0 0 * * * /home/backup.sh | ts '[%Y-%m-%d %H:%M:%S]' > /home/groupz/db-backup/fbackup.log 2>&1
这会将时间戳添加到输出的每一行并将其保存到日志中。
答案4
您可以使用两个 '>' 将一些内容附加到文件中。
$ echo "test" >> test.txt
$ echo "test" >> test.txt
$ cat test.txt
test
test