每日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$
问题是它根本就不会运行。 以下是该脚本的权限:
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-parts --test /etc/cron.daily
发现我的文件update.ubuntu没有出现。 还注意到我的文件有一个扩展名(在其中有一个点)。
解决这个问题的步骤。
- 将update.ubuntu重命名为update-ubuntu
- 现在再次
run-parts --test /etc/cron.daily
,这次我的文件出现了!
可能是以下几种情况之一:
根路径:
根据正在运行的命令,您可能需要通过将以下行放在其crontab文件的顶部来扩展root用户PATH变量:
PATH = / usr / sbin目录:在/ usr / bin中:/ sbin目录:/ bin中
src: https : //help.ubuntu.com/community/CronHowto
或者只使用脚本中每个命令的完整路径:例如/bin/ls
而不是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
如果机器开启,将每天15:30运行。 使用* * * * *测试每分钟运行一次,直到它运行起来。
给你的系统日志写一下这些消息;
crond: (*system*) BAD FILE MODE
在644),文件需要被限制为(足够):
chmod 0644 /etc/cron.d/my_crontab