一台服务器上部署了多个tomcat实例,要获取名为 my_tomcat 的项目进程id,可以用如下命令
ps -ef | grep my_tomcat | grep -v grep | awk '{print $2}'
命令解析:
1、ps -ef | grep my_tomcat 获得了进程信息中包含 my_tomcat 的进程信息
2、第一步查出来的结果中会包含grep本身,所以我们需要用 | grep -v grep 来排除grep本身
3、通过 awk '{print $2}'来打印出要找的进程
4、如果我们要删除该进程,可以用如下命令
ps -ef | grep my_tomcat | grep -v grep | awk '{print $2}'| sed -e "s/^/kill -9 /g" | sh -
5、如果我们需要通过命令行删除指定的项目,可以把脚本修改如下
#!/bin/bash
echo "kill tomcat进程";
echo "文件名:$0";
if [ ! -n "$1" ]
then
echo "请输入要删除的tomcat项目关键字"
else
echo "输入的关键字为:$1";
tomcat_id=$(ps -ef |grep tomcat |grep -w $1|grep -v 'grep' |awk {'print $2'})
echo "查找到的Tomcat项目进程id:$tomcat_id,开始删除进程"
kill -9 $tomcat_id
sleep 5
tomcat_id=$(ps -ef |grep tomcat |grep -w $1|grep -v 'grep' |awk {'print $2'})
echo "重启后的新进程id:$tomcat_id"
fi
测试一下:
sh restart.sh tomcat1
kill tomcat进程
文件名:restart.sh
输入的关键字为:tomcat1
查找到的Tomcat项目进程id:4161413,开始删除进程
重启后的新进程id:4161827