1. 程式人生 > >「linux」後臺啟動nohup經常跟的>/dev/null 2>&1是什麽意思

「linux」後臺啟動nohup經常跟的>/dev/null 2>&1是什麽意思

htm 標準輸出 com gson 錯誤輸出 body 文件名 linux http

https://www.cnblogs.com/wangsongbai/p/10215155.html

我們在寫啟動腳本的時候,會用nohup &,這個大家都知道,但是經常會有 >/dev/null 2>&1。比如

nohup java -jar xxx.jar >/dev/null 2>&1 &

這個到底表示什麽意思

幾個基本符號及其含義

  • /dev/null 表示空設備文件
  • 0 表示stdin標準輸入
  • 1 表示stdout標準輸出
  • 2 表示stderr標準錯誤

對於& 1 更準確的說應該是文件描述符 1,而1標識標準輸出,stdout。

對於2 ,表示標準錯誤,stderr。

2>&1 的意思就是將標準錯誤重定向到標準輸出。這裏標準輸出已經重定向到了 /dev/null。那麽標準錯誤也會輸出到/dev/null

可以把/dev/null 可以看作"黑洞". 它等價於一個只寫文件. 所有寫入它的內容都會永遠丟失. 而嘗試從它那兒讀取內容則什麽也讀不到.

再說2>&1?

在>左邊的2,表示stderr標準錯誤。不需要加&

但是在>右邊的1必須加&,才表示stdout標準輸出

如果不加&,表示的是文件名

另外>左邊如果不加,默認是1

測試

ls 2>1測試一下,不會報沒有2文件的錯誤,但會輸出一個空的文件1;

ls xxx 2>1測試,沒有xxx這個文件的錯誤輸出到了文件1中;

ls xxx 2>&1測試,不會生成1這個文件了,不過錯誤跑到標準輸出了;

ls xxx >out.txt 2>&1, 實際上可換成 ls xxx 1>out.txt 2>&1;重定向符號>默認是1,錯誤和輸出都傳到out.txt了。

「linux」後臺啟動nohup經常跟的>/dev/null 2>&1是什麽意思