nohup命令:如果你正在運行一個進程,而且你覺得在退出帳戶時或者關閉客戶端該進程還不會結束,那么可以使用nohup命令。該命令可以在你退出帳戶/關閉終端之后繼續運行相應的進程。在缺省情況下該作業的所有輸出都被重定向到一個名為nohup.out的文件中。
nohup command > myout.file 2>&1 &
在上面的例子中,0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;
2>&1是將標准錯誤(2)重定向到標准輸出(&1),標准輸出(&1)再被重定向輸入到myout.file文件中。
1、nohup和&的區別
& : 指在后台運行
nohup : nohup運行命令可以使命令永久的執行下去,和用戶終端沒有關系,例如我們斷開SSH連接都不會影響他的運行,注意了nohup沒有后台運行的意思;&才是后台運行,
&是指在后台運行,但當用戶退出(掛起)的時候,命令自動也跟着退出
nohup可以使用Ctrl+C結束掉,而&使用Ctrl+C則結束不掉,nohup不受終端關閉,用戶退出影響,而&則受終端關閉,用戶退出影響
結合起來用就是
nohup COMMAND &
這樣就能使命令永久的在后台執行
nohup java -jar /xxx/xxx/xxx.jar >/dev/null 2>&1 &
關鍵在於最后的 >/dev/null 2>&1 部分,/dev/null是一個虛擬的空設備(類似物理中的黑洞),任何輸出信息被重定向到該設備后,將會石沉大海
>/dev/null 表示將標准輸出信息重定向到"黑洞"
2>&1 表示將標准錯誤重定向到標准輸出(由於標准輸出已經定向到“黑洞”了,即:標准輸出此時也是"黑洞",再將標准錯誤輸出定向到標准輸出,相當於錯誤輸出也被定向至“黑洞”)