在一个最小的、非定制的 Ubuntu 16.04 服务器系统中,我的 /etc/crontab 有以下代码,手动执行时执行得很好:
0 8 * * * zip -r /UsualUser/backups/dirs/html-$(date +\%F-\%T-).zip /var/www/html
0 8 * * * find /UsualUser/backups/dirs/* -mtime +30 -exec rm {} \;
# m h dom m dow
# 0-59 | 0-23 | 1-31 | 1-12 | 0-6
中没有错误journalctl -u cron
。
我认为问题是因为该文件无法执行,因为其权限是644
。但我不确定使其可执行的最安全的权限集是什么,以便其中的代码将开始工作。
答案1
Ubuntu 上的文件/etc/crontab
是系统 crontab 文件。它不应该是可执行的,并且其格式与用户的 crontab 文件不同。
格式上的差异在于其第六个字段是执行该条目的用户名。
此外,%
在 crontab 文件中具有特殊含义。除非转义为(但我看到您已经采取了预防措施),否则所有%
内容都将更改为换行符。\%
这些东西在 crontab 手册 ( man 5 crontab
) 中有描述:
cron 命令的格式非常符合 V7 标准,并具有许多向上兼容的扩展。每行有五个时间和日期字段,后跟一个命令,再后跟一个换行符 (
\n
)。 系统 crontab (/etc/crontab
) 使用相同的格式,只不过命令的用户名是在时间和日期字段之后、命令之前指定的。