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

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以创建存档。

Yus*_*ali 5

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

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

所以:

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