モニタープロセスを終了せずに再生成されるプロセスを終了するには?

モニタープロセスを終了せずに再生成されるプロセスを終了するには?

Linuxで一種の「ブラックリスト」にプロセスを追加する方法はありますか?

ベストアンサー1

一般的なアプローチは、不要な操作を継続しないようにモニター構成を変更することです。何らかの理由でこれを行うことができないと仮定しますが、他の方法は回避策であり、すべての場合には機能しません。

誰かをブラックリストに載せることはできませんプロセス: プロセスはランタイムエンティティです。プロセスが開始されるまでは存在しません。一度起動すると、停止するには遅すぎます。とにかく、開始すべきではないプロセスをどのように識別しますか?

誰かをブラックリストに載せることができますプログラム、より正確には、プログラムの特定のインストールです。すべてのプログラムは実行可能ファイルから始まります。したがって、存在しない実行可能ファイルをスケジュールしても起動しません。削除したり、名前を変更したり、実行不可能にしたりすることもできます。

chmod a-x /path/to/program

何らかの理由でファイルシステムを変更したくない場合や変更できませんが、rootアクセス権がある場合は、セキュリティフレームワーク(SELinuxやAppArmorなど)を使用して、モニタがこの特定のプログラムを実行できないように無効にすることもできます。しかし、それはより複雑です。

ただし、モニターがプログラムの再生成を試み続ける場合、実行可能ファイルが消えた場合は賢明に反応する可能性があります。スパム(またはエラーメッセージを含むいくつかのログファイル)を送信することもできます。

モニターがプログラム活動状態のみを維持していると仮定すると(プログラム機能を確認するのではなく、例えばWebサーバー・プロセスのモニターは定期的にWebページにアクセスし、応答がない場合はサーバーを再始動しようとします)を実行できます。変えるこのプログラムは、何もせずに永遠にブロックするプログラムで構成されています。デフォルトのユーティリティバーにはこれを行うプログラムはありませんが、簡単に作成できます。

#!/bin/sh
while sleep 999999999; do :; done

pkill -STOP programnameプログラムをブロックしたい理由によっては、元のプログラムのプロセス(プロセスID 1234または1234がプロセスID)を中断して、kill -STOP 1234同様の結果を得ることもできない場合もあります。これはプロセスを保存しますが、明示的に復元されるまで何もしません(使用kill -CONT)。プロセスはCPU時間を消費せず、システムが他の作業にRAMを必要とするときにそのメモリを交換しますが、開いているファイルなどのリソースは消費し続けます。

おすすめ記事