cron.daily中的anacron脚本没有通过符号链接运行

时间:2013-08-22 16:44:19

标签: linux bash shell cron

我该怎么做才能让这个脚本每天运行?

如果我手动运行脚本,它可以正常运行。我可以看到它做了它应该做的事情。 (备份文件)但是,它不会作为cron.daily脚本运行。我已经放了好几天而没有接触它 - 它永远不会运行。

实际脚本在/var/www/myapp/backup.sh

这里有一个符号链接/etc/cron.daily/myapp_backup.sh -> /var/www/myapp/backup.sh

/var/log/cron的cron日志显示运行此脚本的anacron:

Aug 19 03:09:01 ip-123-456-78-90 anacron[31537]: Job `cron.daily' started
Aug 19 03:09:01 ip-123-456-78-90 run-parts(/etc/cron.daily)[31545]: starting myapp_backup.sh
Aug 19 03:09:01 ip-123-456-78-90 run-parts(/etc/cron.daily)[31559]: finished myapp_backup.sh

然而,没有证据表明该剧本确实做了任何事情。

以下是这些文件的安全信息:

ls -la /var/cron.daily

<snip>
lrwxrwxrwx  1 root root   25 Aug 12 21:18 myapp_backup.sh -> /var/www/myapp/backup.sh
</snip>

ls -la /var/www/myapp

<snip>
drwxr-xr-x  2 root root 4096 Aug 13 13:55 .
drwxr-xr-x 10 root root 4096 Jul 12 01:00 ..
-rwxr-xr-x  1 root root  407 Aug 12 23:37 backup.sh
-rw-r--r--  1 root root   33 Aug 12 21:13 list.txt
</snip>

backup.sh使用名为list.txt的文件。

脚本只运行tar以创建存档。

2 个答案:

答案 0 :(得分:3)

来自debian / ubuntu系统的cron联机帮助页:

  

这些目录下的文件必须通过一些健全性检查,包括以下内容:可执行,由root拥有,不可由组或其他人写入,如果符号链接,则指向root拥有的文件。此外,文件名必须符合run-parts的文件名要求:它们必须完全由字母,数字组成,并且只能包含特殊符号下划线(&#39; _&#39;)和连字符(&#39; ; - &#39)。任何不符合这些要求的文件都不会被运行部件执行。例如,任何包含点的文件都将被忽略。

所以:

  • 文件需要由root拥有
  • 如果符号链接,源文件需要由root
  • 拥有
  • 如果是符号链接,则链接名称不应包含点

答案 1 :(得分:0)

我遇到过与cron.hourly和awstats处理类似的情况。

我认为它与SELinux和anacron没有cron相同的权限/权限。 ACTUAL解决方案打败了我(到目前为止)。

MY WORKAROUND SOLUTION:通过root的cron条目(crontab -e)运行作业,并按小时计划。