在没有“crontab -e”命令的情况下编辑crontab文件时有什么风险?

时间:2014-06-03 18:15:39

标签: linux bash shell cron

我开发了一个脚本,在其中使用echo命令向crontab文件添加行,并使用sed命令删除行。

我不知道特别是我在某个网站上发现我们必须使用

编辑crontab文件的风险
crontab -e
  1. 不使用crontab -e的风险是什么?
  2. 是否存在我的编辑不会在cron中考虑的风险 日程?
  3. 我应该使用/etc/init.d/cron重新启动来重启cron吗?

2 个答案:

答案 0 :(得分:2)

不使用crontab来编辑或替换cronfiles的主要风险是直接写入cronfile(包括使用sed这样做)不会锁定文件,因此两个同时编辑可能具有不可预测性甚至是不可预测的灾难性的后果。

您不必使用crontab -e;以下形式的编辑是半安全的,因为它们不会随机组合两个编辑。 (但它们仍然不安全;编辑可能会被覆盖):

添加行:

{ crontab -u user -l; echo "$this"; echo "$this_too"; } | crontab -u user -

删除行或执行更复杂的编辑:

crontab -u user -l | sed "$my_wonderful_sed_script" | crontab -u user -

在任何情况下,您都不需要重新启动cron。它会注意到cronfile的修改时间已经改变。

答案 1 :(得分:1)

使用常规编辑器编辑crontab文件时,不会更新计划。在编辑之前,系统仍将执行计划任务。这将使管理员疯狂。

当cron重新启动时,例如重新启动或重新启动进程,将读取当前的crontab文件并按照当前当前文件中的描述调度进程。

我记得发送了一个' kill -HUP'或者'杀死-15'到cron进程的PID,强制进程刷新缓存并再次读取crontab文件。