nohup &


轉自:nohup和&的區別 http://bbs.nanjimao.com/thread-470-1-1.html (出處: 南極貓) 

nohup是永久執行

&是指在后台運行

運行 nohup --help
Run COMMAND, ignoring hangup signals. 可以看到是“運行命令,忽略掛起信號”

就是指,用nohup運行命令可以使命令永久的執行下去,和用戶終端沒有關系,例如我們斷開SSH連接都不會影響他的運行,注意了nohup沒有后台運行的意思;&才是后台運行

&是指在后台運行,但當用戶推出(掛起)的時候,命令自動也跟着退出

那么,我們可以巧妙的吧他們結合起來用就是
nohup COMMAND &
這樣就能使命令永久的在后台執行

舉個例子nohup tail -f nohup.out
然后退出登錄,再連接,用ps -ef 你會還能看到在運行
ps -ef
root      3457     1  0 18:20 ?        00:00:00 tail -f nohup.out

另外,nohup執行后,會產生日子文件,把命令的執行中的消息保存到這個文件中,一般在當前目錄下,如果當前目錄不可寫,那么自動保存到執行這個命令的用戶的home目錄下,例如root的話就保存在/root/下

這個我們常在運行命令和腳本中常用到的

 

nohup 應對的就是突然斷網或者關閉終端時屏蔽發送給后台任務的 SIGHUP 信號進而使任務不中斷繼續運行。
exit 或者 logout 命令正常退出的話根本用不着 nohup,你的 & 運行的命令都不會被中斷。不信你可以 command & 后 exit,再次登錄,ps 查看一下命令肯定還在后台跑。
簡單來說,如果你使用的是 exit 或者 logout 命令正常登出,系統只會向前台任務發送 SIGHUP 信號,& 到后台的任務時不會收到 SIGHUP 信號的。如果你強行關閉的窗口或者斷網了,系統會向你的前后台任務都發送 SIGHUP 信號,此時如果使用了 nohup 去運行任務,nohup 會屏蔽 SIGHUP 信號,任務也就不會被中斷了。

 


免責聲明!

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



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