我有一个 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
不会理解该行的其余部分。)