
正文
Linux下查找进程id并强制停止进程的脚本
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Linux下的tomcat的停止脚本shutdown.sh经常失败,造成tomcat进程没关闭。所以只能手动查找进程id,然后用kill命令来强制停止。每次都要这样查一下,然后再杀进程。感觉有点麻烦,所以就把这个动作写在了脚本里面。
一、思路 这个脚本其实就2步,先获取进程id,然后 kill 掉这个进程。
(1)获取进程id的方法 这个可以用 awk命令来获取ps -ef | grep 你的进程 | grep -v grep | awk '{print $2}'
11 1ps -ef | grep 你的进程 | grep -v grep | awk '{print $2}'
这里要把这个grep这个用 -v 来过滤掉,然后用awk命令,提取第2个参数就是进程id了
(2)杀进程方法 这个就直接kill -9 进程id 就ok了kill -9 你的进程id
11 1kill -9 你的进程id
二、脚本代码
代码如下(/root/tomcat-instance/shutdown_sp.sh):sp_pid=`ps -ef | grep sp-tomcat | grep -v grep | awk '{print $2}'`
if [ -z "$sp_pid" ];
then
echo "[ not find sp-tomcat pid ]"
else
echo "find result: $sp_pid "
kill -9 $sp_pid
fi
8 1sp_pid=`ps -ef | grep sp-tomcat | grep -v grep | awk '{print $2}'`
2if [ -z "$sp_pid" ];
3then
4 echo "[ not find sp-tomcat pid ]"
5else
6 echo "find result: $sp_pid "
7 kill -9 $sp_pid
8fi
注意:使用时,需要把第一行的 sp-tomcat 替换换成你希望杀的进程
说明:可能有人会说查找进程出现多个进程id时,脚本会报错的。其实是不会的,出现多个进程id时,他们之间是有空格隔开来了的。刚好kill命令一次杀多个进程时,进程id需要用空格。所以不需要用for循环来杀进程
ps -ef | grep 你的进程 | grep -v grep | awk '{print $2}'
1
1
1
ps -ef | grep 你的进程 | grep -v grep | awk '{print $2}'
kill -9 你的进程id
1
1
1
kill -9 你的进程id
二、脚本代码
sp_pid=`ps -ef | grep sp-tomcat | grep -v grep | awk '{print $2}'`
if [ -z "$sp_pid" ];
then
echo "[ not find sp-tomcat pid ]"
else
echo "find result: $sp_pid "
kill -9 $sp_pid
fi
8
1
sp_pid=`ps -ef | grep sp-tomcat | grep -v grep | awk '{print $2}'`
2
if [ -z "$sp_pid" ];
3
then
4
echo "[ not find sp-tomcat pid ]"
5
else
6
echo "find result: $sp_pid "
7
kill -9 $sp_pid
8
fi







