我有一个 shell 脚本,当它以 root 身份运行时,它会执行各种任务来准备 Debian (9/stretch) 服务器以运行 Web 应用程序。脚本执行的任务之一是将 cronjob 行附加到root
和www-data
(in /var/spool/cron/crontabs/
) 的 crontab 文件中,使用cat
和 heredoc 文本。
添加到文件中的每个 cronjob 都包含标记注释,因此在使用脚本的卸载功能时,可以使用sed
.
这似乎工作正常,尽管我现在注意到通过 crontabcrontab -l
的前 3 行查看每个 crontab 时没有出现,尽管在直接检查实际的 crontab 文件时它们仍然存在。一些研究表明,这是 Debian 的 crontab 实现中的一个有意功能的副作用,它隐藏了 crontab 的前 3 行,因为它希望这些行是 3 行“请勿编辑此文件”标题。
但是,如果我要附加到以前不存在的 crontab 文件,则此标头不存在,因此不会被创建,这就是为什么 crontab 真正的前 3 行被隐藏的原因。
在任何情况下,通过直接写入 crontab 文件,我可能都没有做正确的事情。如何更新我的脚本,以便它可以自动添加到 crontabs 和从 crontabs 中删除,从而让系统保持满意?
(我从手册页中看到CRONTAB_NOHEADER
可以将其设置为 N 以便不隐藏 3 行。)
而不是操纵单个 crontab,我会选择将 crontab 功能片段放在
/etc/cron*
基于目录的目录中。从某种意义上说,这似乎更容易管理,因为所需要的只是从
/etc/cron*
您需要/希望片段在其下运行的任何目录中创建/删除文件: