试图写一个脚本自动杀死程序(mac / unix - kill tomcat)

时间:2012-06-27 14:17:20

标签: bash shell unix

手工,这是过程:

ps -ef | grep tomcat

结果如下:

0 39107 1 0 5:40PM ttys004 5:22.34 /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java -Djava.util.logging.config.file=/opt/local/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -server -Xms384m -Xmx768m -XX:NewSize=256m -XX:NewRatio=2 -XX:PermSize=128m -XX:MaxPermSize=384m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+CMSClassUnloadingEnabled -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.endorsed.dirs=/opt/local/tomcat7/endorsed -classpath /opt/local/tomcat7/bin/bootstrap.jar:/opt/local/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/opt/local/tomcat7 -Dcatalina.home=/opt/local/tomcat7 -Djava.io.tmpdir=/opt/local/tomcat7/temp org.apache.catalina.startup.Bootstrap start

第二个数字是pid。

然后我做

sudo kill tomcat_pid

如何自动执行此操作?

PS。我知道有一个shutdown.sh脚本。我已经尝试过,但它永远不会奏效。

4 个答案:

答案 0 :(得分:7)

ps -ef | grep tomcat | awk '{ print $2 }' | xargs kill将提取第二个数字并将其传递给kill。实际上,您可能希望ps -efww确保获得整个命令行。

这真的不是最好的方法;理想情况下,您应该在创建稍后要杀死的进程时存储PID,以确保不会因意外发生与您正在搜索的字符串匹配的事情(以及其他潜在问题)而终止。

答案 1 :(得分:0)

这是我的Ubuntu Linux脚本使用bash 它不是自动的,但发现和杀死tomcat来到 如果您想要终止进程并手动输入进程号,请按Enter键。

#/bin/bash
if [ `whoami` != root ]; then
    echo "Please run this script as root or using sudo"
    exit
fi
echo
echo "finding proceses that have name java and established connections status"
echo
echo "Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name"
netstat --tcp --numeric --programs  | grep "ESTABLISHED" | grep "java"
echo 
echo "finding proceses that use port 8080"
echo
netstat --tcp --numeric --programs | grep ":8080" 
echo -n "Do you wish to kill a process listed above?[Y/n]"
read choose
if [ "$choose" = "Y" ] || [ "$choose" = "y" ] || [ -z "$choose" ]
then 
echo "enter pid to kill"
read procesId
kill -9 $procesId
fi
echo "done exiting"
exit 0

答案 2 :(得分:0)

这是使用bash脚本杀死所有正在运行的tomcat进程的脚本

  #!/bin/sh
  ARG=$1 
  for file in `find /proc -regex /proc/[0-9]+ 2> /dev/null`; do
     if `grep --silent org.apache.catalina.startup.Bootstrap $file/cmdline 2> /dev/null`; then 
          base=`basename $file`
          echo "Trying to " kill $ARG $base "tomcat process"
          kill $ARG $base
     fi  
  done

答案 3 :(得分:0)

尝试:

pkill -f catalina; sleep 3

pkill:根据姓名等查找或发出信号流程 睡眠3 :等待3秒,在尝试立即启动tomcat时非常有用。