背景
nohup的意思是“沒有掛斷”。 通常,當我們從系統註銷時,所有正在運行的程序或進程都會掛起或終止。 如果要在註銷或退出Linux操作系統後運行任何程序,則必須使用nohup命令。 有許多程序需要很長時間才能完成。 我們不需要長時間登錄來完成命令的任務。 我們可以使用nohup命令在後臺運行這些類型的程序並稍後檢查輸出。 使用nohup命令的一些示例是內存檢查,服務器重啓,同步等。本教程中顯示瞭如何在Ubuntu上使用nohup命令在後臺運行程序。
- 可以通過下面命令查看nohup的版本
$ nohup --version
示例1:使用沒有'&'的nohup命令
當你運行沒有'&'的nohup命令時,它會在後臺運行該特定命令後立即返回到shell命令提示符。 在以下示例中,nohup運行bash命令而不使用“&”在後臺執行sleep1.sh文件。 如果nohup命令中沒有提到任何重定向文件名,則nohup命令的輸出將在nohup.out中寫入文件。 對於以下命令,您可以通過檢查nohup.out文件的輸出來檢查sleep1.sh的輸出。我們先新建一個sleep.sh作爲測試文件:
$ vim sleep1.sh
加入內容
echo 'sleep1'
測試nohup:
$ nohup bash sleep1.sh
$ cat nohup.out
結果如下:
您可以按以下方式執行該命令,以將輸出重定向到output.txt文件。 檢查output.txt的輸出。
$ nohup bash sleep1.sh > output.txt
$ cat output.txt
示例2:使用帶有'&'的nohup命令
當nohup命令與'&'一起使用時,它在後臺運行命令後,不會返回shell命令提示符。可以輸入'fg'返回shell命令提示符
$ nohup bash sleep1.sh &
$ fg
示例3:使用nohup命令在後臺運行多個命令
您可以使用nohup命令在後臺運行多個命令。 在以下命令中,使用nohup和bash命令在後臺執行mkdir和ls命令。 您可以通過檢查output.txt文件來獲取命令的輸出。但是不建議這麼做,多個命令可以自己寫一個sh腳本來執行
$ nohup bash -c 'mkdir myDir && ls'> output.txt
$ cat output.txt