Linux如何快速編寫重啟動腳本

#!/bin/bash + 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 掉了。造成後續啟動服務命令沒有執行。


Linux如何快速編寫重啟動腳本


解決方法

  • 方法一:更換腳本名稱,將squid.sh 修改為test.sh 。程序運行正常(能夠正常啟動) 主要是因為上面腳本,查找關鍵字"squid"時,直接將腳本自身也kill掉了。


Linux如何快速編寫重啟動腳本


  • 方法二: 修改腳本
#!/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


Linux如何快速編寫重啟動腳本


總結

  • 進程重啟動, 定位服務時,一定要精確定位。不要使用模糊匹配。匹配不好就入坑。


分享到:


相關文章: