我该怎么做才能让这个脚本每天运行?
如果我手动运行脚本,它可以正常运行。我可以看到它做了它应该做的事情。 (备份文件)但是,它不会作为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
以创建存档。
答案 0 :(得分:3)
来自debian / ubuntu系统的cron联机帮助页:
这些目录下的文件必须通过一些健全性检查,包括以下内容:可执行,由root拥有,不可由组或其他人写入,如果符号链接,则指向root拥有的文件。此外,文件名必须符合run-parts的文件名要求:它们必须完全由字母,数字组成,并且只能包含特殊符号下划线(&#39; _&#39;)和连字符(&#39; ; - &#39)。任何不符合这些要求的文件都不会被运行部件执行。例如,任何包含点的文件都将被忽略。
所以:
答案 1 :(得分:0)
我遇到过与cron.hourly和awstats处理类似的情况。
我认为它与SELinux和anacron没有cron相同的权限/权限。 ACTUAL解决方案打败了我(到目前为止)。
MY WORKAROUND SOLUTION:通过root的cron条目(crontab -e)运行作业,并按小时计划。