2011-11-17 110 views
11

我有一個我想在後臺運行的Shell命令,並且我已經讀過,可以通過將&加到命令中來使其運行爲一個後臺進程,但我需要一些更多的功能,並想知道如何去做:運行一個命令作爲後臺進程/服務

  1. 我想命令啓動和運行在後臺每次系統重新啓動。
  2. 我希望能夠在需要時能夠啓動和停止它,就像可以做到的那樣service apache2 start

我該怎麼辦?有沒有一種工具可以讓我作爲一項服務運行命令?

我有點迷路了。

感謝

+0

FYI,一個Unix 「服務」 通常被稱爲[守護進程(http://en.wikipedia.org/wiki/Daemo n_%28computing%29) - 知道這可以幫助你更容易地找到信息。 – Sorpigal

回答

20

查看daemon命令,該命令可以將任意進程轉換爲守護進程。這將允許您的腳本充當守護進程而無需您執行大量額外的工作。下一步是在啓動時自動調用它。要知道正確的方法,你需要提供你的操作系統(或者,對於Linux,你的發行版)。

+0

乾杯Sorpigal。這有幫助。 –

+0

嗨Sorpigal。我知道我已經接受了這個答案,但是你能否告訴我如何讓守護進程在啓動時啓動。我在Ubuntu 10.4上。謝謝。 –

+1

@MridangAgarwalla:我對Ubuntu的新init系統並不是很熟悉,但[請在此嘗試](https://help.ubuntu.com/community/UbuntuBootupHowto),並且在Writing Services部分中,將守護進程的調用放在說「回聲「在這裏放置bash代碼」 – Sorpigal

20

UNIX系統,您需要同時(只需打開新的shell窗口,如果你在一個GUI是),如果你需要攜帶的背景,使運行的進程,只需要能處理儘可能多的進程在運行一個保持運行的應用程序或進程後,使用當前shell窗口作爲其他事情。

要運行一個名爲命令在後臺模式命令,你會使用:

command & 

這是一個特殊的字符,一旦進程啓動返回到命令提示符。還有其他特殊字符可以做其他事情,更多信息可在here

+7

使用Sorgigal解決方案的優點是您可以關閉終端/ shell進程,並且該進程將繼續運行。這不是使用&的情況,因爲進程仍然連接到特定的shell進程,並在shell進程執行時退出。 – metasoarous

+2

爲了讓'command'在關閉shell之後繼續運行,使用'nohup command&' – rem

1

對於使用bash進行高級作業控制,您應該查看命令jobsbgfg

但是,似乎你並不是真的有興趣在後臺運行該命令。你想要做的是在啓動時啓動命令。執行此操作的方式因所用的Unix系統而異,但請嘗試查看rc文件系列(例如,在Ubuntu上爲/etc/rc.local)。它們包含將在init腳本之後執行的腳本。

+0

我知道這不是OP的解決方案,但是如果有人按照這個答案搖擺,知道你可以「放棄」作業即使在shell退出後,它們仍會繼續在後臺運行。 –

0

使用nohup的同時將輸出到/ dev /空

nohup command &>/dev/null &

相關問題