【问题标题】:What is the risk when editing crontab file without the "crontab -e" command?在没有“crontab -e”命令的情况下编辑 crontab 文件有什么风险?
【发布时间】:2014-07-24 04:49:53
【问题描述】:

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

我不知道这样做的风险,尤其是我在某些网站上发现我们必须使用编辑 crontab 文件

crontab -e
  1. 不使用crontab -e会有什么风险?
  2. 是否存在我的编辑不会在 cron 中考虑的风险 时间表?
  3. 我应该使用/etc/init.d/cron restart 重新启动 cron 吗?

【问题讨论】:

    标签: linux bash shell cron


    【解决方案1】:

    使用常规编辑器编辑 crontab 文件时,计划不会更新。系统仍会像编辑前一样执行计划任务。这会让管理员发疯。

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

    我记得向 cron 进程的 PID 发送了一个“kill -HUP”或“kill -15”,以强制该进程刷新缓存并再次读取 crontab 文件。

    【讨论】:

    • HUP根据this site-1 or -HUP - This argument makes kill send the "Hang Up" signal to processes ... Most daemons are programmed to re-read their configuration when they receive such a signal.是对的
    【解决方案2】:

    不使用crontab 编辑或替换 cronfile 的主要风险是直接写入 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 的修改时间发生了变化。

    【讨论】:

      猜你喜欢
      • 2011-03-12
      • 2016-08-01
      • 2017-12-01
      • 1970-01-01
      • 2019-12-11
      • 2014-12-03
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      相关资源
      最近更新 更多