1. 程式人生 > >centos(17)-nohup、&、>、/dev/null、2>&1 後臺離線執行程式

centos(17)-nohup、&、>、/dev/null、2>&1 後臺離線執行程式

假如在putty上用相關命令開啟一個程式,比如用java命令啟動一個spring boot專案,此時日誌會佔據螢幕,無法再執行其他命令,並且一但關閉當前putty終端或按ctrl+c,該程序都會被結束。本篇將介紹如此讓該程序脫離當前終端且始終執行。

& 後臺執行

命令 引數 &:在原有的命令和引數後面加空格&,此時當有日誌時仍然會輸出到螢幕,但程序會在後臺執行,我們在前臺仍然可以執行其他命令。只是關閉putty終端後該程序還是會結束,而且我們並不想在前臺看到那些日誌。

nohup始終執行

nohup 命令 引數:nohup 的位置在命令的前面,即使關閉putty終端該程序仍然會繼續執行,其日誌不會輸出到前臺,而是記錄在當前目錄的nohup.out檔案中。沒有&預設情況是在前臺執行,所以前臺被佔用也無法輸入其他命令,而且ctrl+c仍然會結束當前前臺程式。

nohup 結合 &

nohup 命令 引數 &:當兩者結合使用時,程序會在後臺始終執行,關閉putty終端或在前臺ctrl+c都不會關閉,日誌輸出到nohup.out。

命令示例: nohup 命令 引數 &  

>輸出檔案

假如我們不想把日誌輸出到nohup.out,而是想輸出到test.out

示例:nohup 命令 引數 >test.out &

/dev/null 黑洞裝置

通常一些java框架如spring都會配置記錄日誌,我們並不需要linux來記錄日誌,而且時間長了nohup.out檔案會變的非常大,所以我們把linux中的日誌全部丟到/dev/null中,相當於垃圾桶,就不會再產生linux日誌了。

示例:nohup 命令 引數 >/dev/null &

2>&1錯誤輸出 

有一種很流行的命令格式是:nohup 命令 引數 >/dev/null 2>&1 &,比上面多了個2>&1。2是錯誤資訊輸出 ,1是標準資訊輸出。>/dev/null是將1放進黑洞, 2>&1是將2放進1,最終都進入黑洞。我們要搞清楚,2並不是程式執行時的異常日誌,而是linux系統中的錯誤提示,比如nohup 命令中,這個命令我們輸錯,少打了一個字母,系統會立即給我們提示。而你加了 2>&1以後,這個錯誤提示就進入黑洞,你只能一臉茫然的乾瞪眼。

查詢和殺死程序

如何查詢和殺死在後臺終始執行的程序,參考第11