2009-02-22 78 views
9

我試圖通過命令行在遠程虛擬專用服務器上運行php腳本。我遵循的過程是:如何通過命令行運行php腳本(並在註銷後保持運行)

  1. 登錄到使用膩子
  2. 在命令行提示符下,鍵入服務器> PHP myScript.php

運行該腳本就好了。但問題是,只要關閉PuTTY控制檯窗口,腳本就會停止運行。

我需要腳本繼續無休止地運行。我怎樣才能做到這一點?我在服務器上運行Debian。

在此先感謝。

回答

16

我相信Ben有正確答案,即使用nohup命令。 nohup代表nohangup,意味着你的程序應該忽略一個掛斷信號,當你通過註銷或者因爲你已經超時而斷開連接時產生一個掛斷信號。

您需要知道,命令的輸出將被附加到名爲nohup.out(或$ HOME/nohup.out)的當前目錄中的文件中,如果權限阻止您在當前目錄中創建nohup.out )。如果程序生成大量輸出,則該文件可能會變得非常大,或者可以使用shell重定向將腳本的輸出重定向到另一個文件。

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

這個命令會運行腳本併發送所有輸出(包括標準和錯誤),以將每次運行程序時重新創建的文件myscript.output。

最後的&會導致腳本在後臺運行,因此您可以在運行或註銷時執行其他操作。

9

一個簡單的方法是運行它雖然nohup的:

nohup php myScript.php & 
+1

但請注意,腳本在終止後不會自動重新啓動。 – 2009-02-22 18:30:11

4

如果在screen運行PHP命令,取下screen,那麼它不會當您關閉控制檯終止。

屏幕是一個終端多路複用器,允許您通過一個物理終端管理多個進程。每個進程都有自己的虛擬窗口,並且可以在與每個進程交互的虛擬窗口之間進行反彈。屏幕管理的進程在窗口未處於活動狀態時繼續運行。

+0

我已經做了同樣的事情,但目前我不知道爲什麼我的腳本在屏幕上停止執行。一旦我將退出屏幕並將其重新放入屏幕,那麼它可以正常工作,所以你有什麼想法背後的主要原因是什麼 – 2014-05-23 13:06:12