「kill -9」が機能しない場合はどうなりますか? または 新しいプロセスを開始するスクリプトを強制終了する方法? とにかく役に立ちません。
私はpythonスクリプトが同じポートを使用して別のプロセスIDで自動的に開始する殺されたときSudo kill -9 <pid>
を使用。
$ lsof -i :3002
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python 13242 ubuntu 3u IPv4 64592 0t0 TCP localhost:3002 (LISTEN)
$ Sudo kill -9 13242
$ lsof -i :3002
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python 16106 ubuntu 3u IPv4 74792 0t0 TCP localhost:3002 (LISTEN)
$ Sudo kill 16106
$ lsof -i :3002
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python 16294 ubuntu 3u IPv4 75677 0t0 TCP localhost:3002 (LISTEN)
ゾンビプロセスではありません。
$ ps -Al
4 S 0 16289 1 0 80 0 - 12901 poll_s ? 00:00:00 Sudo
4 S 1000 16293 16289 0 80 0 - 1100 wait ? 00:00:00 sh
0 S 1000 16294 16293 0 80 0 - 34632 poll_s ? 00:00:00 python
私は運が悪くてもSudo pkill -f <processname>
を試しました。死にたくない。
更新:
その親プロセスはsh
であり、その親はSudo
です。上記の表に記載されています。これらを突然殺しても安全かどうかはわかりません。また、これは共有Ubuntuサーバーです。
で自動的に開始する別のプロセスIDは、別のプロセスであることを意味します。したがって、その子を監視する親プロセスがあり、1つが死んだ場合、親によって再生成されます。サービスを完全に停止したい場合は、親プロセスを停止する方法を調べてください。 SIGKILL
でそれを殺すことはもちろんオプションの1つですが、おそらく正しいものではありませんTM、適切にシャットダウンするには、サービスモニターがクリーンアップを行う必要がある場合があるためです。
監視プロセスを見つけるには、実際のリスナーが(通常はfork() + setsid()
コンボによって)親から切り離される可能性があるため、プロセスリスト全体を検査する必要がある場合があります。この場合、ps faux
の出力(少なくともprocps
から、他の実装では異なる場合があります)が便利です。すべてのプロセスが階層ツリーにリストされます。 PID wrap がない限り( wikipedia も参照)、モニターのPIDはリスナーのPIDよりも小さくする必要があります(もちろん、PID-wraparoundにヒットしない限り) )。
プロセスのリスニングポートがわかっている場合は、-k
フラグを指定してfuser
を使用できます。
何かのようなもの、
fuser -k 3002/tcp