現在、shスクリプトファイルで次のような行を使用しています。
kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'`
しかし、プロセス(myServer
ここ)が実行されている場合にのみ呼び出す方法を疑問に思いますか?
現在、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 myServer
かkillall -q myServer
?存在しないプロセスを殺そうとすることにはマイナス面はありません。
|| true
その後追加します。
if ! killall -q myServer; then echo ERROR; fi
?
使用してみてください:
sudo kill `pidof process_name`
process_nameは、強制終了するプロセスの名前です。これの素晴らしい点は、pidofが指定された名前に一致するすべてのプロセスのpidをリストすることです。killは複数のpidを受け入れるため、それらすべてを1つの気まぐれで殺します。
これが役立つかどうか教えてください。
kill `pidof process_name
。空のリストを返す場合は、kill呼び出しをスキップします。
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
次に、プロセス名を付けます。
注:私はこれで何度も試しましたが、それでも問題ありません。
kill
テストと呼び出しの間に競合状態があるため、プロセスの実行中にのみ呼び出すことは不可能ですkill
(その短時間でプロセスが別の理由で停止した可能性があります)。pkill
またはkillall
を使用する必要がありますが、入力するのが少なくてすみます(おそらく他の利点もあります)。