如何将输出重定向到cron中的文件?

Modified on: Sat, 30 Jun 2018 10:39:00 +0800

我有一个备份脚本,我需要在一天的特定时间运行,所以我使用cron执行此任务,并且从cron am中也尝试将备份脚本的输出重定向到一个logfile

crontab -e

*/1 * * * * /home/ranveer/backup.sh &>> /home/ranveer/backup.log

在上面的cron条目中,我将stderr and stdout重定向到日志文件。

上面的cron作业根据syslog执行正常,它执行backup.sh文件中提到的任务,但它不会向日志文件写入任何内容。

/var/log/syslog

Oct 19 20:26:01 ranveer CRON[15214]: (ranveer) CMD (/home/ranveer/backup.sh &>> /home/ranveer/backup.log)

当我从cli运行脚本时,它根据需要工作,输出被写入日志文件

ranveer@ranveer:~$ ./backup.sh &>> backup.log 
ranveer@ranveer:~$ cat backup.log
Fri Oct 19 20:28:01 IST 2012
successfully copied testdir
test.txt successfully copied
-------------------------------------------------------------------------------------
ranveer@ranveer:~$ 

那么,为什么文件的输出没有从cron中重定向到文件。

作者:RanRag

最佳答案

我解决了这个问题。有两种方法:

M1 强>

将重定向从&>>更改为2>&1。所以现在crontab -e看起来像

*/1 * * * * /home/ranveer/vimbackup.sh >> /home/ranveer/vimbackup.log 2>&1

我相信以上是有效的,因为默认cron使用sh来运行任务而不是bash因此&>>不支持sh

M2 强>

通过在SHELL=/bin/bash文件中添加crontab -e来更改默认shell。

作者:RanRag

相关问答

添加新评论