2017-07-17 10 views
-1

私はは、Linux

ps -aux 
root  14074 0.0 0.4 6586120 67452 pts/0 Sl 22:45 0:01 java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain 

は、以下のコマンドを

ps aux | grep "java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain" | \ 
grep -v grep | awk '{print $2}' | xargs kill -9 

問題を使用して停止スクリプトでプロセスを強制終了し、Linuxでプロセスを強制終了しようとしているプロセスを強制終了このコマンドが正常に動作しているときcronscheduler.QuartzMainが実行されています。このプロセスがすでに殺されているときに上記のコマンドは、エラー

Usage: 
kill [options] <pid|name> [...] 

をスローしかし、誤差を除去する上であなたの入力は

+1

エラーメッセージを削除するか、無視しますか? – Evert

+0

プロセスが実行されないため、プロセスIDが取得されないため、最終コマンドにプロセスIDがありません – Gaurav

+0

@ Evertエラーメッセージを削除したい – Zaks

答えて

1

pkillは、完全なコマンドラインを検索することができ感謝しています。それは殺すために、PID(psからの完全なライン)よりも送信しますので、誤差が生じることがあり

pkill -9 -f 'java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain' 

あなたのコマンドを試してみてください。

+0

質問から取りましたが、通常は '-9 'は避けなければならない。 – hek2mgl

+0

はい、必要な場合にのみ '-9'を使用してください。 – clemens

0

私が見つけた解決策の一つは、エラーメッセージリダイレクトすることでした:2>を/ dev/null

0
ps aux | grep httpd 

httpd 3486 0.0 0.1 4248 1432 ?  S Jul31 0:00 /usr/sbin/httpd -f /etc/httpd/httpd.conf 

# kill 3486 

OR

$ sudo kill 3486 
0

/etc/*.conf 猫をこの下にしてみてください子プロセスIDもクリアするのに役立ちます。

for i in `ps -ef| grep "java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain" | grep -v grep | awk '{print $2}'`   
do 
    ptree $i|awk '{print $1}' >>pids.txt 
done 
for i in $(cat pids.txt) 
do 
    kill -9 $i 
done