iperf
デーモンモードで起動しましたが、今iperf -s -D
サービスを停止したいです。試してみましたが、うまくsudo kill pid
いっても文句もありません。確認してみると、デーモンはまだ実行中でしたps -ef | grep iperf
。
Linuxで起動するわけではないので、service
他のデーモンのように見つけることはできません。
どうやって防ぐことができますか?
ベストアンサー1
使用しないでくださいkill -9
!このコマンドは、特定の極端な状況でのみ適用されます。
マニュアルページによると(私のSolarisシステムの場合):
DESCRIPTION
The kill utility sends a signal to the process or processes
specified by each pid operand.
For each pid operand, the kill utility will perform actions
equivalent to the kill(2) function called with the following
arguments:
1. The value of the pid operand will be used as the pid
argument.
2. The sig argument is the value specified by the -s
option, the -signal_name option, or the -signal_number
option, or, if none of these options is specified, by
SIGTERM.
The signaled process must belong to the current user unless
the user is the super-user.
シグナルを指定しないと、killはkill -15
SIGTERM()をプロセスに送信します。 SIGKILL()よりも暴力的な信号を送ることができますkill -9
。
なぜkill -9を避けるべきですか?
SIGKILLは非常に暴力的な信号です。プロセスはこれを捕捉できません。つまり、これを受け取るプロセスは、すぐにすべてを破棄して終了する必要があることを意味します。ロックされたリソース(ネットワークソケットやファイルなど)を解放するのに時間を費やす必要はなく、他のプロセスに終了を通知する必要もありません。コンピュータが不安定な状態になることがよくあります。例えば、SIGKILLを使用してプロセスを終了することは、(コマンドの代わりに)電源ボタンを使用してコンピュータをシャットダウンするのと同じくらい悪いと言えますshutdown
。
実際、SIGKILLは次のようになります。できるだけ避けてください。代わりに、記事で述べたようにkill -2
それでも機能しない場合は試してみることをお勧めしますkill -1
。
私は人々がいつもSIGKILLを送りたいのを見ました(毎日のクリーンアップスクリプトでも!)。私は毎日その問題でチームメンバーと議論をしています。kill -9
盲目的に使用しないでください。