本機環境為ubuntu 14.04
以ping www.baidu.com為例:
1.程序的前台運行
ping www.baidu.com
可以看到,屏幕上輸出了baidu返回的結果
2.實現程序后台的運行
nohup ping www.baidu.com &
運行此命令后,屏幕顯示出進程號(如:[1] 13668),出現新的一行,並進入等待狀態:
$ nohup: 忽略輸入並把輸出追加到"nohup.out"
此時,程序前台運行時的輸出,默認從屏幕重定向到了當前路徑下的nohup.out中。
ctrl+c強制結束或直接關閉此終端后,多次查看nohup.out,其內容是一直變化的。說明剛剛的那條命令已經成功在后台運行。
3.實現輸出重定向
如果后台同時運行多個程序,它們的輸出全都在nohup.out中,閱讀起來很不方便。可通過重定向到不同文件中來解決這個問題。
linux啟動后,會默認打開3個文件描述符,0表示標准輸入,1表示正確輸出,2表示錯誤輸出。
nohup ping www.baidu.com 1>result.out 2>result.out & //將正確輸出和錯誤輸出均寫入result.out文件
4.關閉示后台運行的進程
如果我們想關閉剛剛的后台運行的進程,又忘記了剛剛顯示的進程號,可以用如下方法:
ps -e //顯示所有后台運行的進程 ps -e | grep ping //顯示所有帶有ping的進程
找到對應的進程號,輸入以下命令即可關閉進程
kill [進程號]
參考資料:
http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html