2017-05-21 27 views
0

この関数を作成して、プロセスを部分名で終了し、bash_profileに入れて実行しました。 手動で一度に1つのコマンドを実行すると、すべてが機能します。 しかし、私は関数を呼び出すとき、それは出力に失敗: "違法なプロセスID"macosでプロセスを強制終了するスクリプトbash not working:不正なプロセスID

function killServer() { 
    pid=$(ps -fe | grep '[p]rocessName' | awk '{print $2}') 
    if [[ -n $pid ]]; then 
     kill $pid 
    else 
     echo "Does not exist" 
    fi 
} 

出力:

kill: illegal process id: i311821 

ps -fe | grep '[p]rocessName' 

を実行するには与える:

1543721191を1947 1946 0 9:12 AM ?? 0:46.76 ../../jdk/bin/java -server -da -XX:PermSize = 256m Xrunjdwp:transport = dt_socket、address = 8000、suspend = n、server = y -DMonitorDisabled -Xms2048m -Xmx2048m -Dwrapper。 port = 32000 -com.XXX.YYY.server.util.Main -b 0.0.0.0 -c default その理由は何ですか?

+0

'ps -fe | grep '[p] rocessName''をあなたの質問に追加してください。 – Cyrus

+0

1543721191 1947 1946 0 9:12 AM ?? 0:46.76 ../../jdk/bin/java -server -da -XX:PermSize = 256m Xrunjdwp:transport = dt_socket、address = 8000、suspend = n、server = y -DMonitorDisabled -Xms2048m -Xmx2048m -Dwrapper。 port = 32000 -com.XXX.YYY.server.util.Main -b 0.0.0.0 -c default – MoneerOmar

+1

質問に最後のコメントを入れてください –

答えて

-1

問題が見つかりました: $ 2の後にスペースがありませんでした。修正の後、それは動作します:

ps -ef | grep "[X]XX" | grep -v grep | awk '{print $2 }' | xargs kill -9 
+0

あなたが殺そうとしているプロセスによっては、' pgrep'を使ってこれを大幅に短縮することができます。同じ名前のプロセスが複数ある場合は、明らかにもう少し微調整を行う必要があります。 –

+0

それは違いがゼロになるでしょう。 – 123

+0

あなたのエラーは、出力ではなく、*入力*がawkになったために発生しました。スペースは必要ではなく、フィールド2に非数字文字( 'i')が含まれているという事実は変更されませんでした。 – chepner

関連する問題