& 用於在背景執行指令

& 用於在背景執行指令

當我跑步時

$ ls -R / & 

儘管&(應該將進程降級到後台)我最終不得不坐下來完成我的系統的整個清單。按 CTRL+C 或 CTRL+Z 沒有幫助。我究竟做錯了什麼?

答案1

當您ls -R /在背景啟動時,該指令會立即啟動,並將控制權交還給呼叫 shell(您的互動式 shell)。但是,標準輸出流和標準錯誤流ls仍然連接到終端,因此這就是您在終端機中看到命令輸出的原因。

在評論中您提出一個後續問題,表明您知道可以將命令的輸出重定向到以避免/dev/null將其串流傳輸到終端:

ls -R / >/dev/null 2>&1 &

後續問題是「為什麼Exit 1當我使用jobs -l.

您會得到一個非零退出狀態,ls因為它沒有完全成功運作。事實並非如此,因為您嘗試對整個系統上的所有檔案進行遞歸列表,而您用來運行命令的使用者可能無法讀取系統上的某些目錄。如果您沒有將標準錯誤流重新導向到/dev/null(透過從2>&1命令列中刪除),您可能會在終端機中看到錯誤。

相關內容