10

コマンド ラインを使用して、リモートの仮想プライベート サーバーで php スクリプトを実行しようとしています。私が従うプロセスは次のとおりです。

  1. PuTTY を使用してサーバーにログインします。
  2. コマンド ライン プロンプトで、次のように入力します。> php myScript.php

スクリプトは問題なく実行されます。しかし問題は、PuTTY コンソール ウィンドウを閉じるとすぐにスクリプトの実行が停止することです。

際限なく実行し続けるスクリプトが必要です。どうやってやるの?サーバーで Debian を実行しています。

前もって感謝します。

4

3 に答える 3

17

Ben が正しい答えを持っていると思います。つまり、nohup コマンドを使用します。nohup は nohangup の略で、ログアウトまたはタイムアウトによりパテセッションが切断されたときに生成されるハングアップ信号をプログラムが無視する必要があることを意味します。

コマンドの出力は、現在のディレクトリにある nohup.out (権限によって現在のディレクトリに nohup.out を作成できない場合は $HOME/nohup.out) という名前のファイルに追加されることに注意する必要があります。プログラムが大量の出力を生成する場合、このファイルは非常に大きくなる可能性があります。代わりに、シェル リダイレクトを使用して、スクリプトの出力を別のファイルにリダイレクトすることもできます。

nohup php myscript.php >myscript.output 2>&1 &

このコマンドはスクリプトを実行し、すべての出力 (標準とエラーの両方) をファイル myscript.output に送信します。このファイルは、プログラムを実行するたびに新しく作成されます。

最後の & により、スクリプトがバックグラウンドで実行されるため、実行中またはログアウト中に他のことを実行できます。

于 2009-02-22T18:30:33.240 に答える
9

簡単な方法は、nohup を使用して実行することです。

nohup php myScript.php & 
于 2009-02-22T18:12:20.087 に答える
4

で php コマンドを実行する場合screen、 をデタッチするscreenと、コンソールを閉じても終了しません。

Screen は、1 つの物理端末で多くのプロセスを管理できる端末マルチプレクサーです。各プロセスは独自の仮想ウィンドウを取得し、各プロセスと対話する仮想ウィンドウ間を移動できます。screen によって管理されるプロセスは、ウィンドウがアクティブでない場合でも引き続き実行されます。

于 2009-02-22T18:14:33.980 に答える