/etc/crontab 中的有效代码将不会被执行

/etc/crontab 中的有效代码将不会被执行

在一个最小的、非定制的 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) 使用相同的格式,只不过命令的用户名是在时间和日期字段之后、命令之前指定的。

相关内容