現在、shスクリプトファイルで次のような行を使用しています。
kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'`
しかし、プロセス(myServer
ここ)が実行されている場合にのみ呼び出す方法を疑問に思いますか?
私は通常pgrepとpkillを使用します
if pgrep myServer; then pkill myServer; fi
pkill
またはkillall
を使用して名前でプロセスを強制終了できます。それらのマニュアルページを確認してください。
少し異なるアプローチは次のようになります。
killall PROCESS || echo "Process was not running."
これにより、プロセスが存在しない場合、killall
コマンドから返される1
Error-Codeが回避されます。 echo
部分は、killall
が1
を返し、それ自体が0
(成功)を返す場合にのみ動作します。
R&Dで作成した小さなスクリプト。気に入っていただけるといいけど
#!/bin/bash
echo " Enter the process name:"
read $proc_name
if pgrep $proc_name
then
echo " $proc_name running "
pkill $proc_name
echo "$proc_name got killed"
else
echo " $proc_name is not running/stopped "
fi
script.shのような名前で保存してから
chmod +x script.sh
./script.sh
次に、プロセス名を指定します。
注:私はこれで何度も試しましたが、それでも問題ありません。
使用してみてください:
Sudo kill `pidof process_name`
process_nameは、強制終了するプロセスの名前です。これの素晴らしい点は、pidofが指定された名前に一致するすべてのプロセスのpidをリストすることです。 killは複数のpidを受け入れるため、単一の気まぐれでそれらすべてを殺します。
これが役立つかどうか教えてください。
pidof
でプロセスが存在するかどうかを確認します。もしそうなら、それを殺します:
(! pidof process_name) || Sudo kill -9 $(pidof process_name)
上記のコマンドを実行した後、終了コードは常に0です。