逆水行舟用力撑,一篙松劲退千寻。这篇文章主要讲述生产环境定时任务解注释相关的知识,希望能为你提供帮助。
背景最近遇到一个坑,在生产环境用自动化脚本执行注释和解注释时有部分定时任务没解开。
环境模拟
[root@node01 ~]# crontab -l
*/10 * * * * $HOME/sbin/sms_alarm.sh1> /dev/null 2> & 1
注释脚本
[root@node01 ~]# sed -i/$HOME\\/sbin\\/sms_alarm.sh/s/^/#//var/spool/cron/root
[root@node01 ~]# crontab -l
#*/10 * * * * $HOME/sbin/sms_alarm.sh1> /dev/null 2> & 1
注释脚本没问题,执行后会在行首新增#
解注释
[root@node01 ~]# crontab -l
#*/10 * * * * $HOME/sbin/sms_alarm.sh1> /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.sh1> /dev/null 2> & 1
执行注释脚本,发现定时任务被解注释,看似没问题,其实在生产环境中如果都用自动化方式,一般不会有问题,因为注释和解注释都是分发脚本至各台服务器自动执行,但是不能排除偶尔应急或手动操作,这时定时任务就可能会注释两次或多次,模拟如下:
[root@node01 ~]# crontab -l
##*/10 * * * * $HOME/sbin/sms_alarm.sh1> /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.sh1> /dev/null 2> & 1
本次就遇到了这种问题,由于各种原因导致定时任务注释时前面不止一个#,解注释脚本只能去除一个,导致定时任务没能放开。
解注释脚本修复
[root@node01 ~]# crontab -l
###*/10 * * * * $HOME/sbin/sms_alarm.sh1> /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.sh1> /dev/null 2> & 1
问题解决,完美!
【生产环境定时任务解注释】
推荐阅读
- 浅谈全方位查找
- Zabbix深度应用之NMap端口探测
- Windows Server Core 2022--安装PPTP/L2TP
- 简单的ctime,atime和mtime区别说明
- kubernetes 部署 traefik2.5
- (服务运维)NFS和LAP组合实验
- 如何开发基于云的SaaS应用程序()
- 如何确定二叉树是否高度平衡()
- 如何设计一个很小的URL或URL缩短器()