1. 程式人生 > >記一次停止線上不再跑的服務

記一次停止線上不再跑的服務

traverse com roc args 更新 線上 png ash 公司

剛接手的服務器,什麽移交都沒有,然後發現上邊跑了很多無用的服務在占用系統資源,問開發,查git,查計劃任務,查現有wiki都沒有發現這個服務到底可不可以停,怎麽辦,怎麽去確認它已經沒有人在用呢?我來舉個例子

公司的web服務器組上邊跑php,nginx,mysql,go,go服務是明確在跑的服務,那麽剩下的這些到底有沒有再用呢?
1)查看nginx訪問日誌為空,php訪問日誌為空,近半年日誌都沒有更新過了
2)查看端口連接,沒有1個連接進來
3)查看nginx配置的域名,解析都不在這

講道理,這個時候應該確認這個服務沒有在用了,但是運維無小事,確定這些端口如果連數據包都沒有進來,那麽真的是沒有在用了

寫了兩個腳本配合使用
腳本1:
用來抓包
[root@go_web003 home]# cat /home/wwwroot/lnmp02/vhost/get_portpackage.sh
#!/bin/bash
port=(80 8888 9999 86 87)
time=`date +%F
%R`
getpack(){
tcpdump -i eth0 dst host 1.1.1.1 and dst port $1 >> /home/${2}
${3}.txt
}

traverse_port(){
for p in ${port[@]}
do
get_pack $p $p $time
done
}

traverse_port
腳本2:
計劃任務,用來停止tcpdump,因為上邊指定了抓10個包,不停的抓包也會占用系統資源,如果不停止的話,會一直卡在那,所以計劃任務用來停止抓包

/1 ps -ef |grep tcpdump|grep -v grep |awk ‘{print $2}‘|xargs kill
/10 /home/wwwroot/lnmp02/vhost/get_port_package.sh

結果:跑了3天以後,生成了大量的文件,但都是空的,沒有抓到一個包至此證明真的是沒有人在訪問這幾個端口,和領導對了一下,給開發和相關人員發了郵件之後,就停止了
技術分享圖片

記一次停止線上不再跑的服務