我有这个定时任务:
#!/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
匹配您在命令行中输入的内容
/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
答案2
您的 cron 计划表达式的意思是“每分钟 3”=> 每小时。
每 3 分钟将是:
*/3 * * * *
看到这个不错的工具检查表达式。
此外,只有最后一个 cron 命令才有效。但我不会将输出重定向到/dev/null
.如果您的脚本有任何问题,则很难调试。