我可以在没有“crontab -e”的情况下手动创建和编辑“/var/spool/cron/crontabs/t”吗?

Tim*_*Tim 2 cron

我听说/etc/crontab,只能在没有命令的情况下/etc/cron.d/*手动编辑如何编辑`/etc/crontab`和`/etc/cron.d/下的文件?crontab

我是否需要运行crontab -e来创建和编辑用户特定的 crontab 文件/var/spool/cron/crontabs/

我可以手动创建和编辑 crontab 文件吗 /var/spool/cron/crontabs/t

是否crontab -e做了一些工作让cron守护进程知道并加载用户特定的 crontab 文件,而手动创建和编辑无法做到这一点?

谢谢。

der*_*ert 5

使用Vixie Cron,它们只是普通文件\xe2\x80\x94,只要你获得正确的权限,你就可以随意编辑它们。Cron 将注意到修改的文件并重新加载 crontab(每分钟检查一次)。这实际上都记录在cron 联机帮助页“NOTES”部分中中,至少在 Debian 上是这样。

\n\n

但你真的不应该。

\n\n

首先,您确实不需要:您只需将要作为 crontab 安装的文件传递给程序即可crontabcrontab -u bob FILE将安装FILE为 Bob 的 crontab。并且FILE可以-使用标准输入。如果您想编写 crontab 更改脚本,您可以使用crontab -l -u bob列出 crontab,对其进行编辑,然后将其加载回来。例如,您可以这样做(未经测试)以确保您的 root 任期是短暂的:

\n\n
#!/bin/bash\n\nwhile read -r -u 9 user; do\n    {\n        crontab -l -u "$user"\n        printf \'%s\\n\' \'* * * * * fortune -o | mail -s "DegradedArray event on /dev/md0" root\'\n    } | crontab -u "$user" -\ndone 9< <(getent passwd | cut -d: -f1)\n
Run Code Online (Sandbox Code Playgroud)\n\n

其次,上面暗示了一个不这样做的好理由:这被记录为适用于 Debian 的 cron。但有很多不同的 Cron。例如,RHEL 使用不同的一种。Arch 默认情况下使用 systemd 计时器(不确定它是否使用 systemd crontab 到计时器桥),但如果您想要实际的 Cron,则可以从5 种不同的实现中进行选择。不管怎样,使用crontab安装 crontab 都会起作用,或者至少会失败并显示错误消息,以便您知道它不起作用。它更加便携。

\n