我有这样的工作:
#!/bin/bash
YEAR=`date +%Y`
MONTH=`date +%m`
DAY=`date +%d`
mkdir -p $YEAR/$MONTH/$DAY
mysqldump -uroot -p1234 locatari > $YEAR/$MONTH/$DAY/backup.sql我想每隔3分钟运行一次。我尝试了这些crontab命令中的每一条,但似乎没有一条有效:
3 * * * * /usr/bin /home/rome/cronjob/back.sh > /home/rome/cronjob
3 * * * * /home/rome/cronjob/back.sh/
3 * * * * exec `/bin/bash /home/rome/cronjob/back.sh`
3 * * * * /bin/bash /home/rome/cronjob/back.sh > /dev/null 2>&1我只在我跑的时候才跑:
bash back.sh所有这些都按预期的方式使用bash命令,我的cron调度程序有什么问题?问题是,使用crontab命令,我看不到输出,它只适用于bash命令。
发布于 2018-06-21 12:51:11
您的crontab作业条目中没有一个与您在命令行中输入的内容匹配。
/usr/bin /home/rome/cronjob/back.sh试图运行一个程序/usr/bin,但这是一个目录/home/rome/cronjob/back.sh/试图将您的脚本视为一个目录exec `/bin/bash /home/rome/cronjob/back.sh`尝试将程序的输出用作要运行的程序名。/bin/bash /home/rome/cronjob/back.sh > /dev/null 2>&1这可能有效,只是您已经丢弃了脚本的所有输出,所以您不会看到任何错误根据您的评论中的反馈,您可能需要这样的内容(我省略了/home/rome,因为这是您的主目录):
*/3 * * * * cd cronjob && bash back.sh >back.log 2>&1发布于 2018-06-21 12:51:44
您的cron计划表达式意味着“每分钟3”=>每小时。每3分钟将:
*/3 * * * *查看此好工具以检查表达式。
而且,只有您的最后一个cron命令才能工作。但是我不会将输出重定向到/dev/null。如果您的脚本有任何问题,就很难调试。
https://unix.stackexchange.com/questions/451092
复制相似问题