Cron 作业未写入日志文件

Cron 作业未写入日志文件

我有一个 shell 脚本,在执行时将日期写入日志文件。当我手动运行脚本时,正确的输出将写入文件。但是,这需要自动化,当我作为 cron 作业运行时,没有任何内容写入文件,我很困惑为什么。

定时任务:

0 * * * * tomcat /usr/bin/sh /apps/rdsreplication/snap_replication.sh

示例代码:

#/bin/bash/

echo ---------------------------------------- >> create_snap.txt
echo Start time:  >> create_snap.txt
date >> create_snap.txt

任何帮助,将不胜感激!

答案1

shell脚本需要使用日志文件的完整路径:

#/bin/bash/
# assuming you want the txt file in the same directory as the bash script
logfile="$(dirname "$0")/create_snap.txt"
{
    echo ----------------------------------------
    echo Start time:
    date 
} >> "$logfile"

答案2

对于用户crontab,手册页crontab(5)描述了以下字段:

每行有五个时间和日期字段,如果这是系统 crontab 文件,则后跟一个用户名,后跟一个命令。

所以在你的情况下,你会想要这样的:

0 * * * * /usr/bin/sh /apps/rdsreplication/snap_replication.sh

您应该知道,它将cron通过电子邮件向您发送输出和标准错误从工作中(如果有的话),所以你可能有很多电子邮件告诉你cron找不到命令tomcat。 (或者如果可以的话,它tomcat不会理解该行的其余部分。)

相关内容