2015-09-25 153 views
1

我有一個網頁,它應該在後臺運行一些作業作爲php進程。 另外,它應該能夠識別每個進程以後關閉它。防爆。 Worker1,Worker2 ... 這是如何實現的?還有如何殺死程序? 操作系統是Ubuntu的。 *這些腳本總是在後臺運行,所以它們不會被自己殺死。如何在ubuntu的後臺運行多個php腳本?

+4

歡迎堆棧溢出,@Soheil Yahyaee。我知道這可能不是你想看到的,但我們希望看到你先試過的東西,然後我們可以跳進來幫助你。嘗試一下你的自我,發佈一些代碼,並告訴我們你卡在哪裏。 –

回答

2

你可以在命令年底建成使用nohup開頭和&符號腳本,並在後臺等外殼任務:

~$ nohup php script.php >> /var/tmp/script.log 2>&1 & 

注意該選件2>&1您重定向輸出(標準錯誤和輸出)到標準輸出,然後到一個文件進行記錄(這裏是/var/tmp/script.log)。

編輯: 用命令jobs你可以列出你有活躍的過程到會話(這裏1797是進程PID):

~$ jobs -l 
[1]+ 1797 Running nohup php script.php >> /var/tmp/script.log 2>&1 & 

您可以發送信號的過程中,你發現後進程pid。 殺「好聽」的過程(其中${PID}是進程PID):

~$ kill -SIGTERM ${PID} 

如果該進程被套牢,你可以使用信號SIGKILL(或)。請注意0​​不能被攔截,然後該過程立即結束,沒有任何「清理」操作(關閉臨時文件等)。 kill -9 ${PID}kill -SIGKILL ${PID}應僅用作最後一個資源。

這裏是一些理論:

一個好的過程大約GNU/Linux的:

+0

應該運行script.php的多個實例,並且每個實例都有一個用戶名。以後如何殺死他們? –

+0

可能對「2>&1」部分有所幫助?它有什麼作用? –

+0

'2>&1'您可以重定向標準輸出上的標準錯誤。答案已修改。有關重定向的鏈接:http://www.tldp.org/LDP/abs/html/io-redirection.html –