nohup 與 & 的區別


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM