首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Linux如何快速编写重启动脚本避免入坑

Linux如何快速编写重启动脚本避免入坑

作者头像
Linux运维技术之路
发布2022-06-07 08:47:11
发布2022-06-07 08:47:11
1.1K0
举报

本人在写脚本重启动过程遇到坑,分享给大家,避免大家误入同样的坑。

需求:编写Squid重启动脚本。每天夜间12定时重启动

  • 重启脚本思路:1、停止服务进程,kill 可以搞定 2、启动进程,知道服务如何启动即可

问题现象(坑):执行任务并不能重启动。kill 进程后,直接停止了。不执行后续启动服务命令

  • 脚本:
代码语言:javascript
复制
[root@test scripts]# more squid.sh
#!/bin/bash
source /etc/profile
kill -9 $(ps -ef |grep "squid"  |grep -v "grep"  |awk '{print $2}')
ps aux |grep squid
sleep 1
/usr/sbin/squid -f /etc/squid/squid.conf
ps aux |grep squid

进程图

  • 执行脚本,重启动提示killd错误
代码语言:javascript
复制
[root@test scripts]# sh -x squid.sh
+ source /etc/profile
++ '[' -x /usr/bin/id ']'
++ '[' -z 0 ']'
+++ /usr/bin/id -un
++ USER=root
++ LOGNAME=root
++ MAIL=/var/spool/mail/root
++ '[' 0 = 0 ']'
++ pathmunge /usr/sbin
...
...
+++ alias 'which=alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
++ unset i
++ unset -f pathmunge
+++ whoami
++ export 'HISTTIMEFORMAT=%F %T root '
++ HISTTIMEFORMAT='%F %T root '
+ stop
++ ps -ef
++ grep --color=auto squid
++ grep --color=auto -v grep
++ awk '{print $2}'
+ kill -9 15556 15561 15565 16376 16397
Killed

问题原因

由于执行squid.sh 脚本时,直接将当前shell脚本一起kill 掉了。造成后续启动服务命令没有执行。

解决方法

  • 方法一:更换脚本名称,将squid.sh 修改为test.sh 。程序运行正常(能够正常启动) 主要是因为上面脚本,查找关键字"squid"时,直接将脚本自身也kill掉了。
  • 方法二:修改脚本
代码语言:javascript
复制
#!/bin/bash
source /etc/profile
kill -9 $(ps -ef |grep "/usr/sbin/squid -f /etc/squid/squid.conf"  |grep -v "grep"  |awk '{print $2}')
kill -9 $(ps -ef |grep "/var/log/squid/access.log"  |grep -v "grep"  |awk '{print $2}')
ps aux |grep squid
sleep 1
/usr/sbin/squid -f /etc/squid/squid.conf
echo "squid is restart $(date)" >> /data/logs/squid.log

总结

  • 进程服务重启动, 定位服务时,一定要精确定位。不要使用模糊匹配。匹配不好就入坑。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linux运维技术之路 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求:编写Squid重启动脚本。每天夜间12定时重启动
  • 问题现象(坑):执行任务并不能重启动。kill 进程后,直接停止了。不执行后续启动服务命令
  • 问题原因
  • 解决方法
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档