在 Debian crontab 文件中添加/删除作业?

在 Debian crontab 文件中添加/删除作业?

我有一个 shell 脚本,当以 root 身份运行时,它会执行各种任务来准备 Debian (9/stretch) 服务器来运行 Web 应用程序。该脚本执行的任务之一是使用和 heredoc 文本将 cronjob 行附加到rootwww-data(在)的 crontab 文件中。/var/spool/cron/crontabs/cat

添加到文件中的每个 cronjob 都由标记注释括起来,以便在使用脚本的卸载功能时,可以使用sed.

这似乎工作正常,尽管我现在注意到,通过crontab -lcrontab 的前 3 行查看每个 crontab 时不会出现,尽管在直接检查实际 crontab 文件时它们仍然存在。一些研究表明,这是 Debian 的 crontab 实现中的有意功能的副作用,该功能隐藏 crontab 的前 3 行因为它期望这些行是一个 3 行“不要编辑此文件”标题。

但是,如果我要附加到以前不存在的 crontab 文件,则该标头不存在,因此不会创建,这就是为什么 crontab 的真正前 3 行被隐藏的原因。

无论如何,我可能没有通过直接写入 crontab 文件来做正确的事情。如何更新我的脚本,以便它可以自动添加到 crontab 或从 crontab 中删除,从而使系统保持满意?

(我从手册页中看到,CRONTAB_NOHEADER可以将其设置为 N,以免隐藏 3 行。)

答案1

我不会选择操作单独的 crontab,而是选择将 crontab 功能的片段放到/etc/cron*基于目录的目录中。

这似乎更容易管理,因为所需的只是从/etc/cron*您需要/希望片段运行的任何目录中创建/删除文件:

$ ls -ld /etc/cron*
-rw-------. 1 root root    0 May  2 10:54 /etc/cron.allow
drwxr-xr-x. 2 root root 4096 Jul 28 14:56 /etc/cron.d
drw-------. 2 root root 4096 Jul 28 14:56 /etc/cron.daily
-rw-------  1 root root    0 Apr 10 21:48 /etc/cron.deny
drw-------. 2 root root 4096 Jul 28 14:55 /etc/cron.hourly
drw-------. 2 root root 4096 Jun  9  2014 /etc/cron.monthly
-rw-------. 1 root root  451 Jun  9  2014 /etc/crontab
drw-------. 2 root root 4096 Jun  9  2014 /etc/cron.weekly

相关内容