Cronjob 输出不起作用

Cronjob 输出不起作用

我有这个定时任务:

#!/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 命令。

答案1

您的作业条目均不crontab匹配您在命令行中输入的内容

  1. /usr/bin /home/rome/cronjob/back.sh尝试运行一个程序/usr/bin,但那是一个目录
  2. /home/rome/cronjob/back.sh/尝试将您的脚本视为目录
  3. exec `/bin/bash /home/rome/cronjob/back.sh`尝试使用输出作为要运行的程序名称
  4. /bin/bash /home/rome/cronjob/back.sh > /dev/null 2>&1这可能有效,只是您已经丢弃了脚本的所有输出,因此您不会看到任何错误

根据您的评论反馈,您似乎可能想要这样的东西(我省略了,/home/rome因为无论如何那是您的主目录):

*/3 * * * * cd cronjob && bash back.sh >back.log 2>&1

答案2

您的 cron 计划表达式的意思是“每分钟 3”=> 每小时。
每 3 分钟将是:

*/3 * * * *

看到这个不错的工具检查表达式。

此外,只有最后一个 cron 命令才有效。但我不会将输出重定向到/dev/null.如果您的脚本有任何问题,则很难调试。

相关内容