【Linux】nohup和&的區別

同樣都是後臺執行進程,但是nohup和&有什麼區別呢?

& 是指後臺運行;

 nohup 的功能和& 之間的功能並不相同。

其中,nohup 可以使得命令永遠運行下去和用戶終端沒有關係。

當我們斷開ssh 連接的時候不會影響他的運行。

而& 表示後臺運行。當ssh 斷開連接的時候(用戶退出或掛起的時候),命令也自動退出。

 當然我們可以把兩者結合起來使用:  

nohup command &   

來實現命令的後臺運行並且和用戶終端沒有關係。  

由 nohup 文檔來看:  

If the output file nohup.out cannot be created in the current directory, the nohup utility uses the directory named by HOME to create the file.  

表示:

nohup 命令執行後,會產生日誌文件,把命令的執行中的消息報損到這個文件之中。

如果當前文件不可寫,那麼會自動保存到執行這個命令的home 目錄下面。

如果是超級管理員root 對應的是/root 目錄。

 從上面對比我們發現:

 1. & 可以使得命令 免疫 ctrl c 的 SIGINT 信號,不能是的命令對 SIGHUP 信號進行免疫。

 2. nohup 可以使得命令對兩個信號都可以進行免疫。  爲了使得 & 達到相同的效果:

總結:

1.nohup可以掛載後臺執行,同樣終端退出或者斷開不會影響進程,同樣如果使用默認的nohup command 的話,默認會出現一個nohup.out文件來輸出進程執行的內容,前提是運行的用戶有當前目錄的寫權限。但執行nohup command的時候,不會顯示命令行,直到程序結束

2.& 同樣可以掛載到後臺執行,但是終端退出或者ssh端口,都會引起後臺進程停止

兩者同時使用是最好的結果

nohup command &

來達到推出中端也不會影響後臺進程運行

如果想要查看正在後臺執行的進程

可以使用jobs命令來查看

直接命令行輸入jobs即可查看使用&或者nohup xx &

再或者直接使用ps -ef 或者ps aux 直接查看進程即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章