我有一個我想在後臺運行的Shell命令,並且我已經讀過,可以通過將&
加到命令中來使其運行爲一個後臺進程,但我需要一些更多的功能,並想知道如何去做:運行一個命令作爲後臺進程/服務
- 我想命令啓動和運行在後臺每次系統重新啓動。
- 我希望能夠在需要時能夠啓動和停止它,就像可以做到的那樣
service apache2 start
。
我該怎麼辦?有沒有一種工具可以讓我作爲一項服務運行命令?
我有點迷路了。
感謝
我有一個我想在後臺運行的Shell命令,並且我已經讀過,可以通過將&
加到命令中來使其運行爲一個後臺進程,但我需要一些更多的功能,並想知道如何去做:運行一個命令作爲後臺進程/服務
service apache2 start
。我該怎麼辦?有沒有一種工具可以讓我作爲一項服務運行命令?
我有點迷路了。
感謝
查看daemon命令,該命令可以將任意進程轉換爲守護進程。這將允許您的腳本充當守護進程而無需您執行大量額外的工作。下一步是在啓動時自動調用它。要知道正確的方法,你需要提供你的操作系統(或者,對於Linux,你的發行版)。
乾杯Sorpigal。這有幫助。 –
嗨Sorpigal。我知道我已經接受了這個答案,但是你能否告訴我如何讓守護進程在啓動時啓動。我在Ubuntu 10.4上。謝謝。 –
@MridangAgarwalla:我對Ubuntu的新init系統並不是很熟悉,但[請在此嘗試](https://help.ubuntu.com/community/UbuntuBootupHowto),並且在Writing Services部分中,將守護進程的調用放在說「回聲「在這裏放置bash代碼」 – Sorpigal
UNIX系統,您需要同時(只需打開新的shell窗口,如果你在一個GUI是),如果你需要攜帶的背景,使運行的進程,只需要能處理儘可能多的進程在運行一個保持運行的應用程序或進程後,使用當前shell窗口作爲其他事情。
要運行一個名爲命令在後臺模式命令,你會使用:
command &
這是一個特殊的字符,一旦進程啓動返回到命令提示符。還有其他特殊字符可以做其他事情,更多信息可在here。
使用Sorgigal解決方案的優點是您可以關閉終端/ shell進程,並且該進程將繼續運行。這不是使用&的情況,因爲進程仍然連接到特定的shell進程,並在shell進程執行時退出。 – metasoarous
爲了讓'command'在關閉shell之後繼續運行,使用'nohup command&' – rem
對於使用bash進行高級作業控制,您應該查看命令jobs
bg
和fg
。
但是,似乎你並不是真的有興趣在後臺運行該命令。你想要做的是在啓動時啓動命令。執行此操作的方式因所用的Unix系統而異,但請嘗試查看rc
文件系列(例如,在Ubuntu上爲/etc/rc.local
)。它們包含將在init腳本之後執行的腳本。
我知道這不是OP的解決方案,但是如果有人按照這個答案搖擺,知道你可以「放棄」作業即使在shell退出後,它們仍會繼續在後臺運行。 –
基於這篇文章:
http://felixmilea.com/2014/12/running-bash-commands-background-properly/
...另一個好方法是使用screen
如:
screen -d -m -s "my session name" <command to run>
-d -m
開始屏幕分離模式。這會創建一個新的會話,但不附加到它。這對系統啓動腳本很有用。
,即你可以關閉你的終端,該進程將繼續運行(不像&
)
與screen
你也可以重新連接到會議後
使用nohup的同時將輸出到/ dev /空
nohup command &>/dev/null &
FYI,一個Unix 「服務」 通常被稱爲[守護進程(http://en.wikipedia.org/wiki/Daemo n_%28computing%29) - 知道這可以幫助你更容易地找到信息。 – Sorpigal