因此,我创建了一个备份脚本,将文件打包成 tar 文件,然后将其 rsync 到远程服务器,最后再删除 tar 文件。我手动测试了该文件,并且它能够运行,但是我无法通过 cron 让它运行。
脚本详细信息:
-rwxr-xr-x 1 root root 792 Sep 21 18:44 backup.sh
Crontab详细信息:
* 04 * * * sh /home/user/scripts/backup.sh >/dev/null 2>&1
系统日志输出:
Sep 23 16:25:01 user CRON[15244]: (root) CMD (sh /home/user/scripts/backup.sh >/dev/null 2>&1)
我也尝试过只运行 /home/user/scripts/backup.sh,前面不带 sh,但是它给出了相同的 syslog 输出。
任何帮助我都会感激不尽。由于系统日志中没有任何实际详细信息,我遇到了障碍。
答案1
由于您在 syslog 中看到该命令,因此该命令正在运行。我猜想您的 shell 脚本顶部没有 hashbang,在 sh 中运行作业时使用的是 bash 语法,或者使用的是非完全限定路径(仅使用 echo 而不是 /bin/echo)。该问题的答案如下: https://unix.stackexchange.com/questions/94456/how-to-change-cron-shell-sh-to-bash
答案2
你的 cron 任务将在每天凌晨 4 点每分钟创建备份。你每分钟创建一次备份,因此你的备份过程可能需要超过 1 分钟。首先将 * 更改为 0 或其他值。如果你想每天创建一次备份,那么使用
0 04 * * * /home/user/scripts/backup.sh >/dev/null 2>&1
它将在每天凌晨 4 点创建备份。
或者如果你想每四小时创建一次备份,那么使用类似
0 */4 * * * /home/user/scripts/backup.sh >/dev/null 2>&1
无需添加sh
。确保您提供了脚本的完整路径。
您可以从中了解更多信息如何设置 Cron 作业?或任何其他博客。还要确保您将其设置为 root 用户。我无法谈论您的 shell,因为我不知道您在 shell 中写了什么。
经过crontab 不起作用的原因这是查找基本 crontab 问题的很好的解释。你也可以查看我的回答来获得帮助这里
答案3
尝试重新启动 cron 服务。
/etc/init.d/crond start
然后检查你的进程是否正在运行。