GNU/Linux >> Linux の 問題 >  >> Linux

バックグラウンド プロセスとしてコマンド ラインから PHP スクリプトを実行する

nohup php file.php > /dev/null 2>&1 &

大なり小なり (> ) などのコマンドで、プログラムの出力をどこかにリダイレクトします。この場合、何かが /dev/null にリダイレクトされています 、そして何かが &1 にリダイレクトされています

標準イン、アウト、エラー

プログラムの入力と出力には 3 つの標準的なソースがあります。標準入力は通常、対話型プログラムの場合はキーボードから、または別のプログラムの出力を処理している場合は別のプログラムから取得されます。プログラムは通常、標準出力に出力し、場合によっては標準エラーに出力します。これら 3 つのファイル記述子 (「データ パイプ」と考えることができます) は、しばしば STDIN, STDOUT, and STDERR と呼ばれます。 .

名前が付けられていない場合もありますが、番号が付けられています。それらの組み込みの番号付けは 0, 1, and 2 です 、その順序で。デフォルトでは、明示的に名前を付けたり番号を付けたりしない場合、STDOUT について話していることになります .

上記のコマンドは、標準出力を /dev/null にリダイレクトしています 、これは、不要なものをダンプできる場所であり、標準エラーを標準出力にリダイレクトします( & を配置する必要があります これを行うと、宛先の前に表示されます)。

したがって、簡単な説明は、「このコマンドからのすべての出力は、ブラック ホールに押し込まれる必要があります」です。これは、プログラムを非常に静かにする 1 つの良い方法です!

& 最後に、コマンドをバックグラウンドに置きます。

参照:https://www.xaprb.com/blog/2006/06/06/what-does-devnull-21-mean/


スクリプトにエラーが含まれていませんか?これにより、通常、「実行が非常に迅速に終了する」 "。
最初に、以下を追加します:

error_reporting(E_ALL); ini_set('display_errors', 1);

スクリプトの先頭でエラーを表示するには、次を使用できます:

nohup php filename.php &

<ブロック引用>

セッションが切断された場合やユーザーがログアウトした場合でも、nohup はコマンドを実行します。

または

nohup php filename.php >/dev/null 2>&1 &

<ブロック引用>

上記と同じですが、nohup.out を作成しません ファイル。

以下も使用できます。
ignore_user_abort(1);

<ブロック引用>

クライアントの切断でスクリプトの実行を中止するかどうかを設定します


`set_time_limit(0);`

スクリプトの最大実行時間を制限します。この場合、プロセスが終了するか、Apache プロセスが再起動するまで実行されます。

#Notesphp そして filename.php パスはフルパスで指定できます 、php の代わりに と filename.php/usr/bin/php を使用できます と /full/path/to/filename.php .
フルパスを推奨 ファイルが見つからないを回避する エラー。


セッションが終了すると、プロセスが終了する場合があります。

nohup php filename.php を使ってみてください


Linux
  1. ルートとしてコマンドラインからソフトウェアセンターを実行していますか?

  2. コマンドラインからPerl/PHPスクリプトを実行する

  3. PHPスクリプトをデーモンプロセスとして実行

  1. コマンド ラインから任意の場所で実行するスクリプトをインストールするにはどうすればよいですか?

  2. コマンドラインから PHP コードを実行するにはどうすればよいですか?

  3. コマンドラインからGNU/Linuxで特定のプロセスの親PIDを取得するには?

  1. bashスクリプトが同時に実行されないようにする

  2. Linuxでバックグラウンドで実行されているプロセスが強制終了されました

  3. コマンドラインからの Clonezilla