再起動を継続するプロセスの終了

再起動を継続するプロセスの終了

「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サーバーです。

答え1

自動起動他のプロセスIDつまり、別のプロセスという意味です。したがって、子プロセスを監視する親プロセスがあり、プロセスの1つが終了すると、親プロセスによって復活します。サービスを完全に停止するには、親プロセスを停止する方法を学びます。 Killの使用は間違いなくオプションの1つですが、サービスモニターを正しくシャットダウンするにはクリーンアップが必要な場合があるため、SIGKILLRight One TMではない可能性があります。

モニター・プロセスを見つけるには、プロセス全体のリストを確認する必要があります。これは、実際のリスナーがそのプロセスを親プロセスから分離した可能性があるためです(通常は組み合わせてfork() + setsid())。この場合、ps faux私が見つけた出力(少なくとも他の実装によって異なる場合があります)はprocps非常に便利です。階層ツリーのすべてのプロセスを一覧表示します。すでに存在しない限りPIDパッケージ(あなたも見ることができますウィキペディア)、モニターPIDはリスナーのPIDより小さくなければなりません(もちろん、PIDラップラウンドが発生しない限り)。

答え2

プロセスのリスニングポートがわかっている場合は、fuserwith-kフラグを使用できます。

それはまるで、

fuser -k 3002/tcp

関連情報