2012-04-23 209 views
2

簡單的問題:有沒有辦法在後臺運行一個腳本與終端運行?在後臺運行腳本?

更多細節和背景:我有一個應用程序,它可以讀取應用程序.log文件並從中讀取信息,然後從日誌中的信息中提供信息和統計信息。 對應用程序的更新改變了.log文件的寫入方式,並以我無法預測的方式刪除信息並複製日誌。

設計爲與日誌接口的應用程序未編碼以檢查此類更改。所以當它在日誌更改後嘗試收集信息時,它將停止工作。

「hack」已被設計爲運行尾部-f,然後對應用程序進行hexed指向新文件。 (該「黑客」的作品) 我想在後臺運行的尾巴,使用戶不中斷它...打破它......

- 抱歉的(可能)比需要的更長描述。我想一個更詳細的問題會給我一個確切的答案。

在此先感謝!如果你需要能夠重新連接的過程中退出後殼

〜¥oseph

+0

至少乍一看,這聽起來像你正在尋找['nohup'](http://ss64.com/bash/nohup.html)。 – 2012-04-23 04:02:29

+0

試試看http://stackoverflow.com/questions/3430330/best-way-to-make-a-shell-script-daemon – subbul 2012-04-23 04:21:31

+0

@jerry看看他們的man頁面,看起來好像nohup會做什麼我需要。當我搜索這個時,我遇到了&運算符,但是如果終端被殺死,那麼循環就不會存活。 @ subbu看看開始停止並不是看起來,但是如果終端方法不起作用,將它變成deamon是一個想法。所以如果nohup不是我正在尋找的疾病去計劃「B」。同時我會查看這兩者並對它們進行測試。我會用結果更新帖子。謝謝! – 2012-04-23 13:00:16

回答

5

答案取決於。如果這個過程是非交互式的,並且可以簡單地放在一起,那麼「nohup program &」應該可以做到。但是這不會讓你在關閉shell之後繼續與程序進行交互。

如果它是一個交互式程序,那麼您最好的選擇是使用屏幕或其他終端多路複用器之一。你開始「屏幕」,它給你一個新的shell,在這裏你開始你想要的任何程序,通常的方式,比如說「nano myfile.txt」。

當你想關閉shell,但保持程序運行時,按C-a d('Detach')從屏幕分離。它會繼續運行,但在後臺運行,即使註銷也會繼續運行。

當你以後想要重新連接到屏幕時,你打開一個新的shell並鍵入「screen -r」(重新連接),這會讓你在你所在的地方。

屏幕還允許您在單個終端窗口中運行多個不同的外殼,並且整體上是一個整潔的工具。一探究竟。