cronで始まるプロセスを監視または終了する方法は?

cronで始まるプロセスを監視または終了する方法は?

システムスケジューラによって指定された間隔で実行されるボットがあります。しかし、時には、いくつかの論理エラーのためにこれらのボットを手動で停止する必要があります。スケジューラで実行されているこれらのプロセスを見つけて終了するにはどうすればよいですか?

ベストアンサー1

名前でプロセスを終了できます。たとえば、Linux、* BSD、およびSolarisでは、pkill myprogram名前に(正確な一致のために)含まれるすべてのプロセスを終了します。 root以外のユーザーとして実行すると、そのユーザーのプロセスのみが終了し、一致を制御するための追加オプションがあります(詳細についてはシステムのマニュアルを参照)。myprogrampkill '^myprogram$'

スケジューラによって開始されたプロセスを具体的にターゲットとして指定し、プロセスを手動で終了したい場合ps f(Linuxのみ)またはpstree(Linuxのみ)ptreeツリーにプロセスを表示し、cronによって開始されたプロセスを確認してください。

ホームフロー方式を使用してこれらのプロセスを自動的に終了するには、プロセスIDをファイルに保存する必要があります。この種のファイルpidファイルプロセスの単一インスタンスのみを実行するために使用される場合(必要なものでもそうでない場合もあります)。複数のインスタンスが必要な場合は、PIDを共通ディレクトリの別々のファイルに保存してください。これはこれを行うシェルの断片です。

pid_dir=/var/run/myprogram # must have been created e.g. at boot time
myprogram &
pid_file=$pid_dir/$!.pid
touch "$pid_file"
wait
rm "$pid_file"

ランアウェイプロセスを検出するための厳しい基準がある場合のより良い解決策は、汎用モニターを使用するか、簡単な場合にプロセスの実行が許可される時間を制限することです。次のリンクが役に立ちます。

おすすめ記事