./script &>> log.txt
我得到了一个很好的日志文件,但如果我让 cron 执行相同的命令,那么 crontab 看起来如下:
* * * * * '/home/user/script &>> /home/user/log.txt'
log.txt 将只是空的,我尝试了“和'和`并且没有勾选来括住命令,知道为什么流不会写入文件吗?
答案1
有可能 cron 使用的 shell 不支持&>>
Bash 支持的简写重定向运算符。
您应该使用 Bourne shell 和其他程序支持的便携形式:
* * * * * /home/user/script >> /home/user/log.txt 2>&1
这表示“将标准输出(文件描述符 1)附加到文件并将标准错误(文件描述符 2)发送到同一位置”。
而且您不需要任何引号。
答案2
不要在 crontab 中的命令中包含任何引号。
考虑运行执行其自身重定向的环境设置脚本,而不是依赖 cron 来执行此操作。
根据我的经验,crontab 文件中的内容越少越好。我的 crontab 文件由时间控制加上一个简单的绝对命令名称 (ksh) 和要运行的命令组成:
# @(#)$Id: crontab,v 4.2 2007/09/17 02:41:00 jleffler Exp $
# Crontab file for Home Directory for Jonathan Leffler (JL)
#-----------------------------------------------------------------------------
#Min Hour Day Month Weekday Command
#-----------------------------------------------------------------------------
0 * * * * /usr/bin/ksh /work1/jleffler/bin/Cron/hourly
1 1 * * * /usr/bin/ksh /work1/jleffler/bin/Cron/daily
23 1 * * 1-5 /usr/bin/ksh /work1/jleffler/bin/Cron/weekday
2 3 * * 0 /usr/bin/ksh /work1/jleffler/bin/Cron/weekly
21 3 1 * * /usr/bin/ksh /work1/jleffler/bin/Cron/monthly