0

私はウェブホスティングの所有者です。理由はわかりませんが、何時間も (個人的に知られている顧客として) 起動される php スクリプトがいくつかあるので、どこかにバグがあると思います。

これらのスクリプトは RAM とスワップを食い尽くしています...したがって、プロセスを一覧表示し、実行時間を見つけ、実行が 10 分または 20 分を超えた場合に 1 つずつ強制終了する方法を探しています。

私は bash の達人ではありませんが、bash とパイプについては知っています。私が知らない唯一のことは、プロセスをリストする方法です(実行時間と引数付きの完全なコマンドラインを使用)。実際、トップ(その後c)でもphpには引数がありません:/

ご協力いただきありがとうございます。

4

2 に答える 2

4

mod_phpを使用してApacheを実行している場合、スクリプトは実際にはApacheプロセス内で実行されているため、個別のPHPプロセスは表示されません。FastCGIとして実行している場合、PHP / FastCGIの経験がなく、これについて間違っている可能性がありますが、実際のスクリプト実行で識別可能なPHPプロセスが表示されない場合もあります。

このオプションは設定できますが、セーフモードで実行しない限りmax_execution_time、実行時に呼び出すことで上書きできます。ただし、セーフモードはPHP 5.3で非推奨になり、5.4で削除されたため、5.4を使用している場合、またはアップグレードを計画している場合は、セーフモードに依存することはできません。set_time_limit()

既存の顧客と一緒に管理できる場合(場合によってはPHPコードに重要な変更が必要になるため)、PHPをCGIとして実行すると、実際のスクリプト実行を監視できるようになります。これは、各CGIリクエストが個別のPHPインタープリタープロセスを生成するためです。そして、彼らが実行しているスクリプトを区別できるはずです。ただし、CGIは最も効果の低いセットアップであることに注意してください(他はmod_phpとFastCGIです)。

于 2012-06-14T10:33:06.740 に答える
1

コマンドを使用してps -aux、プロセスと詳細情報を一覧表示できます。

psまた、 man ページをチェックアウトすることもできます。

これも何かの助けになるかもしれません。

于 2012-06-14T09:57:45.533 に答える