如何将日志添加到带有时间戳的crontab中


9

在crontab中,我安排了每日备份脚本。现在,当cron执行脚本时,状态将记录到日志文件中,如下所示。

0 0 * * * /home/backup.sh > /home/groupz/db-backup/fbackup.log 2>&1  

现在,当cron执行脚本时,每次都会更新日志的内容。因此,我希望将内容与执行时间的时间戳一起添加到同一文件中,并将每次添加的内容与现有内容一起添加到同一文件下。我怎样才能做到这一点。


不要忘记在crontab中转义“%”字符!+%d-%m-%y/%H:%M:%S将成为:+\%d-\%m-\%y/\%H:\%M:\%S
Vylmarion

Answers:



5

如何在文件中获取时间戳

要在文件中添加时间戳,可以使用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

我认为上面的修改应该做您想要的。


这应该是公认的答案
Dominik

1

(在Debian Jessie上)使用软件包中包含的ts命令moreutils。例如:

0 0 * * * /home/backup.sh | ts '[%Y-%m-%d %H:%M:%S]' > /home/groupz/db-backup/fbackup.log 2>&1  

这会将时间戳记附加到输出的每一行,并将其保存到日志中。


1
不适用于我,我正在使用Ubuntu 16.04。我安装了moreutils
Hamman Samuel

0

由于您正在运行Shell脚本,因此为什么不添加以下行,

some ./script    
echo `date -u `
some ./other/script

在您的脚本中,即/home/backup.sh

然后

0 0 * * * /home/backup.sh >> /home/groupz/db-backup/fbackup.log 2>&1

将在fbackup.log之前/之后添加一行,例如UTC 2018 Thu Jun 14 11:10:22


echo `date -u`一样data -u吗?
Stephen Rauch

回声添加了换行符AIUI。
pbhj

-2

您可以使用其中两个“>”将某些内容附加到文件中。

$ echo "test" >> test.txt
$ echo "test" >> test.txt

$ cat test.txt
test
test

2
时间戳呢
user3004356
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.