2009-02-22 9 views
9

リモート仮想プライベートサーバ上でコマンドラインからphpスクリプトを実行しようとしています。私は従うプロセスは次のとおりです。コマンドラインからphpスクリプトを実行する方法(そしてログアウト後に実行する)

  1. コマンドラインプロンプトでPuTTYの
  2. を使用してサーバにログインし、タイプ> PHPのmyScript.php

スクリプトがうまく動作します。しかし、PuTTYコンソールウィンドウを閉じるとすぐにスクリプトが実行を停止するという問題があります。

私は無限に走り続けるためにスクリプトが必要です。どうやってやるの?私はサーバ上でDebianを実行しています。

ありがとうございます。

答えて

16

私はBenが正しい答えを持っていると信じています。すなわち、nohupコマンドを使用します。 nohupはnohangupの略で、ログアウトするか、タイムアウトしたためにセッションが切断されたときに生成されるハングアップシグナルをプログラムが無視すべきであることを意味します。

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

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

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

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

9

簡単な方法は、nohupをかかわらず、それを実行することです:あなたはscreenでPHPのコマンドを実行すると、screenを切り離し

nohup php myScript.php & 
+1

ただし、終了後にスクリプトが自動的に再起動することはありません。 –

4

、それはあなたがあなたのコンソールを閉じたときに終了しません。

スクリーンは、1つの物理端末で多くのプロセスを管理できる端末マルチプレクサです。各プロセスは独自の仮想ウィンドウを取得し、各プロセスと相互作用する仮想ウィンドウをバウンスすることができます。画面が管理しているプロセスは、そのウィンドウがアクティブでない場合でも実行され続けます。

+0

私はあなたが言ったように同じことをしていたが、現在のところ、私のスクリプトがスクリーンで実行を停止する理由を知りません。一度私は画面から終了し、画面に再び入れて、それはうまく動作するので、何の考えを持ってこれの背後にある主な理由です –

関連する問題