2010-03-23 30 views
11

我有一個無限循環的PHP腳本。我需要這個腳本永遠運行。所以,我跑如何在Linux的後臺運行無限腳本?

php /path/to/script.php > /dev/null & 

它在我的當前用戶的安全上下文中的後臺工作。但是,當我關閉終端窗口(註銷)時,CentOS Linux殺死了我的程序。

我看到兩個猜測:從後臺運行一個不同的用戶或創建一個守護進程。在每種情況下我都需要幫助。

非常感謝!

+0

可能重複的http://stackoverflow.com/questions/285015/linux-prevent-a-background-process-from-being-stopped-after-closing-ssh-client – Ether 2010-04-10 17:07:16

回答

24

nohup是你的朋友。

nohup command & 
+0

太簡單了!謝謝! – 2010-03-23 10:49:26

6

我認爲,一般的解決方法是nohup

nohup的是POSIX命令忽略HUP(掛起)信號,使命令,以保持誰發出命令的用戶運行後已註銷。按照慣例,HUP(掛斷)信號是終端警告取決於註銷過程的方式。

nohup最常用來作爲守護程序在後臺運行命令。如果輸出沒有被重定向,那麼通常會去往終端的輸出會轉到名爲nohup.out的文件。當需要運行多個相互依賴的批處理作業時,該命令非常有用。

1

您可以:

  • 安裝屏幕,並從那裏運行命令。屏幕是一個持久的終端會話,您可以繼續運行。所以它加載在開機
  • 寫一個init /暴發戶(不管你使用)腳本
  • 使用PEAR的lib system_daemon
  • 使用cron如果批量工作符合情況較好(只記得檢查後才能啓動運行實例另外,當且僅當併發問題)
  • 編輯:或其他人一樣和他們的兄弟剛纔說的,nohup
0

使用命令

的nohup your_command &

例如
nohup的phantomjs highcharts-convert.js -host 127.0.0.1 -port 3003 &

這裏「phantomjs highcharts-convert.js -host 127.0.0.1 -port 3003 「是我的命令