2012-11-12 47 views
40

我是系統管理員,我被要求運行一個linux腳本來清理系統。在linux命令結尾處的「&」是什麼意思?

的命令是這樣的:

perl script.pl > output.log & 

所以這個命令與&結束的標誌,是有它的任何特殊意義?

我有shell的基本知識,但我從來沒有見過這個。

+0

unix se的標誌 –

+0

第一步,「男人bash」。 – 2012-11-12 05:41:12

+0

對不起,我確實知道這些基本的東西 – Dude

回答

73

&使命令在後臺運行。

man bash來自:

如果一個命令是由操作者控制&終止時,殼 中在子shell後臺執行該命令。外殼不 不會等待命令完成,並 返回狀態是0。

8

此外,還可以使用「&」簽署通過,以一(1)ssh連接到運行多個進程以保持最小數量的終端。例如,我有一個進程偵聽消息以提取文件,第二個進程偵聽消息以便上傳文件:使用「&」我可以在一個終端中運行這兩種服務,通過單個ssh連接到我的服務器。


*****我剛剛意識到,在ssh會話關閉後,通過「&」運行的這些進程也將「保持活躍」!相當整潔和有用的,如果你的服務器連接中斷**

+0

'nohup'會讓流程保持活躍狀態​​。 –

2

當不告訴其他命令接管前景。您只有一個「前臺」進程在單個shell會話中運行。 &符號指示命令在後臺進程中運行,並立即返回命令行以獲取其他命令。

sh my_script.sh & 

外殼會議閉幕之後一個後臺進程將活路。 SIGHUP終止所有正在運行的進程。無論如何。如果您的命令是長時間運行或將無限期運行(即:微服務),您需要PR-掛起用nohup的它,所以它保持運行您從會話中斷開後:

nohup sh my_script.sh & 

編輯:是否有似乎當使用&時,請關閉後臺進程的灰色區域。請注意,根據您的操作系統和本地配置(特別是CENTOS/RHEL),殼牌可能會關閉您的過程: https://serverfault.com/a/117157

相關問題