【问题标题】:Remove @restart cronjob using bash使用 bash 删除 @restart cronjob
【发布时间】:2015-10-08 13:27:28
【问题描述】:

我正在尝试使用 bash 和 sed 删除 @restart cronjob。 cronjob 条目如下所示

@reboot /opt/nzbget/nzbget -D

我已尝试使用发布在here 的帮助,但它使用正则表达式和非@reboot cronjobs,因此不起作用

我确实尝试过调整但失败了

crontab -l | sed "/\@reboot \/opt\/nzbget\/nzbget \-D/" | crontab -

由于下面的回答,我留下了针对特定用户的信息

crontab -l -u username | sed '\~@reboot /opt/nzbget/nzbget -D~d' | crontab -u username -

【问题讨论】:

  • 还有其他@reboot 工作吗? (您的 sed 命令没有任何操作。它只是一种模式。您需要告诉 sed 实际执行某些操作(例如删除行等)。)
  • 可能还有其他@reboot 作业,@anubhava 建议删除所有@reboot 作业
  • 该答案应该只删除与该确切模式匹配的行。你确定你真的用过吗?它在这里对一些伪造的输入起作用。其他行的内容是否相同?
  • 另一个被删除的 cronjob 是:@reboot sleep 180 && cd $PATH_UBOOQUITY && nohup java -jar $PATH_UBOOQUITY/Ubooquity.jar -webadmin -headless -port 2202 编辑:原来这是不同 crontab 的问题,我需要使用 crontab -l -u

标签: bash sed cron


【解决方案1】:

您可以通过管道发送到此sed 以删除该行:

sed '\~@reboot /opt/nzbget/nzbget -D~d'

【讨论】:

  • 谢谢,不幸的是,这会删除所有行。完全使用这种语法crontab -l | sed '\~@reboot /opt/nzbget/nzbget -D~d' | crontab -
  • 在我按用户问题对我的 crontab 进行排序后,现在运行良好,谢谢。虽然似乎无法标记为答案
  • 为什么要转义起始分隔符?
  • @hek2mgl:这是由于使用备用分隔符~sed 中搜索
  • @hek2mgl ~ 在地址中有效,并且 sed 选择了该解释并在没有明显转义的情况下感到困惑。 (我不得不尝试看看。)
猜你喜欢
  • 2021-07-29
  • 2019-07-31
  • 2021-08-22
  • 2017-03-08
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2019-07-21
相关资源
最近更新 更多