前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生产环境定时任务解注释

生产环境定时任务解注释

作者头像
loong576
发布2022-01-26 08:34:47
2970
发布2022-01-26 08:34:47
举报
文章被收录于专栏:运维ABC运维ABC
背景

最近遇到一个坑,在生产环境用自动化脚本执行注释和解注释时有部分定时任务没解开。

环境模拟
代码语言:javascript
复制
[root@node01 ~]# crontab -l
*/10 * * * * $HOME/sbin/sms_alarm.sh  1>/dev/null 2>&1
注释脚本
代码语言:javascript
复制
[root@node01 ~]# sed -i  '/$HOME\/sbin\/sms_alarm.sh/s/^/#/'  /var/spool/cron/root
[root@node01 ~]# crontab -l
#*/10 * * * * $HOME/sbin/sms_alarm.sh  1>/dev/null 2>&1

注释脚本没问题,执行后会在行首新增#

解注释
代码语言:javascript
复制
[root@node01 ~]# crontab -l
#*/10 * * * * $HOME/sbin/sms_alarm.sh  1>/dev/null 2>&1  
[root@node01 ~]# sed -i   '/^#.*$HOME\/sbin\/sms_alarm.sh/s/^#//g'  /var/spool/cron/root
[root@node01 ~]# crontab -l
*/10 * * * * $HOME/sbin/sms_alarm.sh  1>/dev/null 2>&1

执行注释脚本,发现定时任务被解注释,看似没问题,其实在生产环境中如果都用自动化方式,一般不会有问题,因为注释和解注释都是分发脚本至各台服务器自动执行,但是不能排除偶尔应急或手动操作,这时定时任务就可能会注释两次或多次,模拟如下:

代码语言:javascript
复制
[root@node01 ~]# crontab -l
##*/10 * * * * $HOME/sbin/sms_alarm.sh  1>/dev/null 2>&1  
[root@node01 ~]# sed -i   '/^#.*$HOME\/sbin\/sms_alarm.sh/s/^#//g'  /var/spool/cron/root
[root@node01 ~]# crontab -l
#*/10 * * * * $HOME/sbin/sms_alarm.sh  1>/dev/null 2>&1
生产环境定时任务解注释_生产环境
生产环境定时任务解注释_生产环境

本次就遇到了这种问题,由于各种原因导致定时任务注释时前面不止一个#,解注释脚本只能去除一个,导致定时任务没能放开。

解注释脚本修复
代码语言:javascript
复制
[root@node01 ~]# crontab -l
###*/10 * * * * $HOME/sbin/sms_alarm.sh  1>/dev/null 2>&1  
[root@node01 ~]# sed -i   '/^#.*$HOME\/sbin\/sms_alarm.sh/s/^#*//g'  /var/spool/cron/root
[root@node01 ~]# crontab -l
*/10 * * * * $HOME/sbin/sms_alarm.sh  1>/dev/null 2>&1
生产环境定时任务解注释_sed_02
生产环境定时任务解注释_sed_02

只需要在sed脚本替换#时新增一个*即可,代表匹配一个或多个#

问题解决,完美!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/01/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 环境模拟
  • 注释脚本
  • 解注释
  • 解注释脚本修复
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档