nohup -- invoke a utility immune to hangups : 運行命令忽略掛起信號 & 是指後臺運行; nohup 的功能和& 之間的功能並不相同。其中,nohup 可以使得命令永遠運行下去和用戶終端沒有關係。當我們斷開ssh 連接的時候不會影響他的運行。而& 表示後臺 ...
nohup -- invoke a utility immune to hangups : 運行命令忽略掛起信號
& 是指後臺運行;
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 可以使得命令對兩個信號都可以進行免疫。
為了使得 & 達到相同的效果:
我們可以使用如下操作:
如果已經使用 & 命令進行 後臺運行。
可以使用disown -h 讓任務忽略sighup 信號;
同樣不會因為控制台的終端而中斷任務。
展示:
斷開終端重新登錄時:
這樣當你在大量備份文件的時候,如果出現斷網或者不得不下線的時候。我們可以使用。
ctrl z 掛起任務;disown-h 使得任務 忽略sighup 信號;使用 bg 命令使得命令後臺運行。這樣就可以放心得下線了。
參考鏈接:
1. https://blog.csdn.net/zhang_Red/article/details/52789691
2. https://blog.csdn.net/stpeace/article/details/76389073