實例:項目中用到的啟動程序腳本 start_server.sh 執行命令:sh start_server.sh
nohup python3 oa_sup_server.py >/dev/null 2>&1 &
nohup表示當前用戶和系統會話下的進程忽略響應HUP消息,也就是不掛斷的運行命令;
& 符號(命令末尾出現的) 是把該命令以后台的job的形式運行;
>/dev/null 表示一個空設備,就是把command 的執行結果重定向到空設備中,就是不顯示任何信息
2>&1 :
首先了解一下:
0:表示stdin 標准輸入
1:表示stdout 標准輸出
2:表示stderr 標准錯誤
command >/dev/hull 相當於執行了 command 1 >/dev/null 執行command產生了標准輸出stdout(用1表示)重定向到/dev/null的設備文件中;
對於 2>&1的理解:2就是標准錯誤,1就是標准輸出,那么可以簡單理解為把標准錯誤重定向到標准輸出;
為什么是 &1 而不是 1, 這里的&符號是什么?
&符號可以理解為引用(reference),&1 就是對標准輸出的引用;
command 1 >a 2>&1 與 command 1>a 2>a 還是有區別的,區別就是在於前者只打開一次文件a,后者會打開文件a兩次,並導致stdout被stderr覆蓋,&1 的含義就可以理解為用標准輸出的引用,引用的就是重定向標准輸出產生打開a;
從IO效率上來講,command 1 >a 2>&1 比 command 1>a 2>a 的效率更高;