每日 cron 作业未运行

Tho*_*hom 10 bash cron

快速概述:我有一个脚本,每天将我的源代码存储库从 SVN 备份到当天的 tarball 中。由于输出目录的所有权,我已经测试了该脚本,只要我以 sudo 身份运行它,它就可以很好地工作。

所以问题是我想每天运行它,所以我在 /etc/cron.daily 目录中放了一个链接。以下是目录的内容。

thom@spenser:/etc/cron.daily$ ls -l
total 60
-rwxr-xr-x 1 root root   189 2011-09-14 02:21 apport
-rwxr-xr-x 1 root root 15535 2011-10-06 11:30 apt
-rwxr-xr-x 1 root root   314 2011-08-08 16:57 aptitude
lrwxrwxrwx 1 root root    24 2012-02-28 11:05 backup -> /usr/local/bin/backup.sh
-rwxr-xr-x 1 root root   502 2011-06-08 11:48 bsdmainutils
-rwxr-xr-x 1 root root   256 2011-10-06 04:04 dpkg
-rwxr-xr-x 1 root root   372 2011-10-04 16:50 logrotate
-rwxr-xr-x 1 root root  1353 2011-07-27 07:17 man-db
-rwxr-xr-x 1 root root   606 2011-08-17 09:16 mlocate
-rwxr-xr-x 1 root root   249 2011-06-24 05:36 passwd
-rwxr-xr-x 1 root root  2417 2011-07-01 17:25 popularity-contest
-rwxr-xr-x 1 root root   383 2011-09-30 15:09 samba
-rwxr-xr-x 1 root root  3594 2011-09-19 20:07 standard
thom@spenser:/etc/cron.daily$ 
Run Code Online (Sandbox Code Playgroud)

问题是它永远不会运行。这是该脚本的权限:

thom@spenser:/etc/cron.daily$ ls -l /usr/local/bin/backup.sh 
-rwxr-xr-x 1 root root 260 2012-02-28 11:03 /usr/local/bin/backup.sh
Run Code Online (Sandbox Code Playgroud)

想法?

小智 38

试过这个

run-parts --test /etc/cron.daily
Run Code Online (Sandbox Code Playgroud)

发现我的文件update.ubuntu没有上来。还注意到我的文件有一个扩展名(里面有点)。

解决此问题的步骤。

  1. 将我的update.ubuntu重命名为update-ubuntu
  2. 再次run-parts --test /etc/cron.daily,这次我的文件出现了!

  • 这需要更高。我将我的脚本保存为传统的“backup.sh”。删除“.sh”部分解决了它。万分感谢! (3认同)

小智 3

可能是以下几种情况之一:

根路径:

根据正在运行的命令,您可能需要通过将以下行放在 crontab 文件的顶部来扩展 root 用户的 PATH 变量:

路径=/usr/sbin:/usr/bin:/sbin:/bin

源代码:https: //help.ubuntu.com/community/CronHowto

或者只使用脚本中每个命令的完整路径:/bin/ls而不是ls例如。(which ls在路径的命令行中)。

这里报告的文件名中存在一个关于点的奇怪错误。可能会扩展到您要链接的文件,尽管这似乎不太可能。

您是否保存备份文件的输出?将类似的内容放在第一行,以帮助确定它是否根本没有运行或正在运行但在某个时刻失败。

/bin/echo "Attempting to run backup" >> /path-to-home/backup.log

或者尝试直接将脚本添加到 crontab 文件中:

sudo -i
crontab -e
[add the next line to the file, then save and exit]
33 15 * * * /usr/local/bin/backup.sh
Run Code Online (Sandbox Code Playgroud)

如果机器开启,则每天 15:30 运行。在测试时使用 * * * * * 每分钟运行一次,直到它正常工作。