有時我會意外地/本能地tab在一個我可能不應該有的目錄中加倍。在目前的情況下,我寫這篇文章的原因是它位於一個舊的、非常滿的 cifs 驅動器上。
當然,這會導致控制終端掛起等待目錄列表,Ctrl+C不執行任何操作,因為它會向錯誤的進程發送中斷(我認為列表是在子 shell 中產生的)。
有什麼辦法可以取消這個清單嗎?它是在進程列表中可見的東西還是我只需要等待列表完成(似乎沒有超時)。
這是 Ubuntu 16.04 上的 Bash。
不是“如何禁用”的重複。我不想禁用該功能,我想知道當它在需要很長時間的目錄列表上意外運行時如何停止它。
答案1
Ctrl+C不執行任何操作,因為它會向錯誤的進程發送中斷(我認為該清單是在子 shell 中產生的)。
它正在向正確的進程發送中斷,但該進程處於不間斷的睡眠。
不間斷睡眠狀態是指不會立即處理訊號的睡眠狀態。只有當等待的資源變得可用或等待期間發生逾時(如果在進入睡眠狀態時指定)時,它才會被喚醒。它主要由等待磁碟或網路 IO(輸入/輸出)的裝置驅動程式使用。當進程不間斷地睡眠時,當進程從系統呼叫或陷阱返回時,將注意到睡眠期間累積的訊號。
在類 Unix 系統中,此指令
ps -l
使用D
進程的不間斷睡眠狀態碼。即使使用這些進程也無法殺死它們SIGKILL
,擺脫它們的唯一簡單方法是重新啟動系統。
所以
有什麼辦法可以取消這個清單嗎?
重啟。
它在進程列表中可見嗎?
是的。處於狀態的進程D
。
我只需要等待列表通過嗎?
是的。或重新啟動。