Linux 命令之 2>&1 &


實例:項目中用到的啟動程序腳本 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 的效率更高; 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM