010*_*101 1 linux bash shell cron
我该怎么做才能让这个脚本每天运行?
如果我手动运行脚本,它会起作用。我可以看到它做了它应该做的。(备份文件) 但是,它不会作为 cron.daily 脚本运行。我已经好几天没有碰它了——它从来没有运行过。
实际脚本在这里 /var/www/myapp/backup.sh
这里有一个符号链接 /etc/cron.daily/myapp_backup.sh -> /var/www/myapp/backup.sh
cron 日志/var/log/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
Run Code Online (Sandbox Code Playgroud)
然而,没有证据表明该脚本实际上做了任何事情。
以下是这些文件的安全信息:
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>
Run Code Online (Sandbox Code Playgroud)
调用的文件list.txt由backup.sh 使用。
该脚本只是运行tar以创建存档。
来自 debian/ubuntu 系统的 cron 联机帮助页:
这些目录下的文件必须通过一些健全性检查,包括以下内容:可执行、由 root 拥有、不可由组或其他人写入,如果符号链接,则指向 root 拥有的文件。此外,文件名必须符合 run-parts 的文件名要求:它们必须完全由字母、数字组成,并且只能包含特殊符号下划线 ('_') 和连字符 ('-')。任何不符合这些要求的文件都不会被运行部分执行。例如,任何包含点的文件都将被忽略。
所以: