进程查找后强制结束及状态监控
一、进程查找后强制结束
注意是避免每次都手工执行先查询获取进程ID,再手工执行kill命令,用于开发中经常替换可执行文件
killserver.sh
#!/bin/bash
ps -ef|grep 'LinuxTcpServer'|grep -v 'grep' | awk '{print $2}' |xargs kill -s 9
以后台进程LinuxTcpServer为例,后台进行运行情况如下:
1、查看进程’LinuxTcpServer’:ps -ef|grep ‘LinuxTcpServer’
注意-f参数,如果不加-f参数则显示(LinuxTcpServer.out显示会截断)
2、过滤掉第二个grep --color=auto LinuxTcpServer:ps -ef|grep ‘LinuxTcpServer’|grep -v ‘grep’
3、获取进程ID(通过awk逗号分隔,第二列就是进程ID):ps -ef|grep ‘LinuxTcpServer’|grep -v ‘grep’ | awk ‘{print $2}’
4、根据进程ID结束进程(xargs 将前面的命令结果进程ID作为kill命令的参数):ps -ef|grep ‘LinuxTcpServer’|grep -v ‘grep’ | awk ‘{print $2}’ |xargs kill -s 9
二、进程状态监控
判断进程是否存在(用于定时任务守护进程,进程不存在则重启):ps -ef|grep ‘LinuxTcpServer’|grep -v ‘grep’|wc -l
示例如下(wc -l统计结果行数,为1表示存在进程,否则表示进程不存在):
check-server-status.sh
#!/bin/bash
server_status=`ps -ef|grep 'LinuxTcpServer'|grep -v 'grep'|wc -l`
if [ ${server_status} -eq 1 ]; then
echo `date +"%Y-%m-%d %H:%M:%S server is running......"`
else
echo `date +"%Y-%m-%d %H:%M:%S server is stopped!"`
fi
当进程未被kill掉前执行./check-server-status.sh效果如下
当进程被kill掉后执行./check-server-status.sh效果如下