我crontab -e
在 ubuntu 服务器中每天凌晨 2 点运行一个 backup.sh 文件。我写道:00 02 * * * root /home/backup.sh
然后/etc/init.d/cron restart
它crontab -l
显示:00 02 * * * root /home/backup.sh
。我可以自己运行 backup.sh,它运行良好。但它没有按计划自动运行。
答案1
当您将 cron 作业作为用户作业(使用 编辑作业crontab -e
)运行时,您无需指定用户。如果您运行系统 cron 作业,则可以指定用户。
要么把那一行放到/etc/crontab
或者使用类似或的/etc/cron.d/yourfile
编辑器 或者删除 /home/backup.sh 之前的“root”vi
nano
另外要注意的是,确保mysqldump
脚本中的所有程序都具有完整路径,或者确保它们位于脚本执行环境 PATH(与 shell PATH 不同)中。请参阅:
man 5 crontab
示例 CRON 文件
系统 CRON 文件示例
答案2
将错误消息重定向到日志文件并检查。
/home/backup.sh 2>1 /home/backup.output
这很可能是权利或路径问题。
答案3
有两点需要讲:
- 安装新的 cron 作业时,不需要重新启动 cron 守护程序。
- cron 作业失败的最常见原因是用户权限/许可和环境变量。因此,您需要确保在同一用户下运行 cron 作业。此外,尝试通过包含完整路径来更改所使用的命令。
答案4
尝试按以下方式编辑 crontab:
0 2 * * * root /home/backup.sh
并确保授予该脚本执行权限。