linux 後臺執行程式,輸出重定向
很多時間,我們希望程式後臺執行,這樣不會干擾我們做別的事,也可以關閉shell登入,把輸出列印到檔案中,方便我們看資訊,這樣就需要讓其後臺執行,先看一個執行例子
./WeightBarCode resolutionratio=640*480 samplerate=30 device=2 > log.txt 2>&1 &
後面的>log.txt 是我們輸出重定向的檔名,2>&1 &表示後臺執行。
小夥伴們不知道後面2 1 這類的數字代表什麼意思,可以看下面的文章
Linux Shell 環境中支援輸入輸出重定向,用符號" <"和">"來表示。0、1和2分別表示標準輸入、標準輸出和標準錯誤資訊輸出,可以用來指定需要重定向的標準輸入或輸出,比如 2>a.txt 表示將錯誤資訊輸出到檔案a.txt中。
同時,還可以在這三個標準輸入輸出之間實現重定向,比如將錯誤資訊重定向到標準輸出,可以用 2>&1來實現。
Linux下還有一個特殊的檔案/dev/null,它就像一個無底洞,所有重定向到它的資訊都會消失得無影無蹤。這一點非常有用,當我們不需要回顯程式的所有資訊時,就可以將輸出重定向到/dev/null。
如果想要正常輸出和錯誤資訊都不顯示,則要把標準輸出和標準錯誤都重定向到/dev/null, 例如:
# ls 1>/dev/null 2>/dev/null
還有一種做法是將錯誤重定向到標準輸出,然後再重定向到 /dev/null,例如:
# ls >/dev/null 2>&1
注意:此處的順序不能更改,否則達不到想要的效果,此時先將標準輸出重定向到 /dev/null,然後將標準錯誤重定向到標準輸出,由於標準輸出已經重定向到了/dev/null,因此標準錯誤也會重定向到/dev/null,於是一切靜悄悄:-)
另外+:
make >& make_log
意思是把標準輸出和錯誤輸出都重定向, make>out 只重定向標準輸出!!!!!
>log 表示把標準輸出重新定向到檔案log中
>& log 表示把標準輸出和錯誤輸出都定向到檔案log中,相當於 >log 2>&1