3

手作業で、ここにプロセスがあります:

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

2番目の数字はpidです。

それから私はします

sudo kill tomcat_pid

どうすればこれを自動化できますか?

ps。shutdown.shスクリプトがあることは知っています。私はそれを試しましたが、うまくいきません。

4

4 に答える 4

7

ps -ef | grep tomcat | awk '{ print $2 }' | xargs killその2番目の数値を抽出し、に渡しkillます。実際には、ps -efwwコマンドライン全体を確実に取得する必要があります。

これは本当にこれを行うための最良の方法ではありません。理想的には、後で強制終了するプロセスを作成するときにPIDを保存して、(他の潜在的な問題の中でも)検索している文字列と誤って一致するものを強制終了しないようにする必要があります。

于 2012-06-27T14:57:57.073 に答える
0

これはUbuntuLinux用の私のスクリプトです。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
于 2012-09-18T00:22:13.013 に答える
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
于 2014-11-11T05:03:48.767 に答える
0

試してみてください:

pkill -f catalina; sleep 3

pkill:名前やその他に基づいてプロセスを検索または通知します。
sleep 3:3秒間待ちます。これは、Tomcatをすぐに起動しようとするときに役立ちます。

于 2015-10-06T21:47:31.310 に答える