使用sed修改cron定时规则时丢失后续配置如何解决
可行sed实现方案
通用方案(匹配所有cron任务行修改)
执行以下命令即可只替换时间规则、保留后续用户和执行命令:
sed -i '/^[0-9*]/ s/^[^ ]\+ [^ ]\+ [^ ]\+ [^ ]\+ [^ ]\+/* * * * */' zyx.txt
命令逻辑说明:
- 前置匹配规则
/^[0-9*]/:只处理开头为数字或*的行,也就是cron任务行,不会修改SHELL、PATH等全局配置行 - 替换规则:匹配行首连续5个由空格分隔的时间字段,替换为每分钟执行的规则
* * * * *,后续的用户、命令路径内容完全保留不会被删除
精准方案(仅修改log-cleaner对应的任务行)
如果配置文件里有多条cron任务,只想修改日志清理的那条,用以下更安全的命令:
sed -i '/\/usr\/local\/bin\/log-cleaner/ s/^[^ ]\+ [^ ]\+ [^ ]\+ [^ ]\+ [^ ]\+/* * * * */' zyx.txt
原命令错误原因
你之前的命令正则只捕获了行内前3组内容,替换时直接将匹配到的部分替换为5个*,后续的用户、命令内容直接被截断删除,同时没有限制匹配行范围,存在误改其他配置的风险。
内容的提问来源于stack exchange,提问作者dpd
相关产品推荐
相关产品推荐

