當我跑步時
$ 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
命令列中刪除),您可能會在終端機中看到錯誤。