Ubuntu的ls命令卡住

文章轉載自:Ubuntu的ls命令卡住

昨天讓某人自行探索設置PATH環境變量,今天告訴我賬號異常,具體表現是bitwise登錄後sftp欄無法顯示文件。做一些不懂原理的操作,接着出現自己無法解決的奇怪問題,這是linux新手常見的問題。我打心底裏認爲應該是環境變量導致,問題應該手到擒來。

於是用其賬號密碼登錄系統,習慣性的敲了ll命令,沒想到竟然卡住了!按ctrl+c kill掉命令,接着嘗試ls,發現同樣卡住。這個現象讓我很吃驚,不僅僅是因爲之前沒碰到過,更因爲其home目錄下文件很少,不應該出現卡住的問題。

好消息是問題原因找到了:ls命令有問題,所以sftp不能列出文件。但ls爲什麼會卡住呢?

type ls查看ls的具體定義,輸出:ls is aliased tols -hF --color=tty'。接着看ls的具體路徑:which ls,結果爲/bin/ls`。兩者都沒毛病,怎麼突然之間就不幹活了?

嘗試執行原生ls/bin/ls,正常顯示結果;加上-l選項:/bin/ls -l,同樣卡死了。根據別名lsll的具體形式,得出結論爲:-F選項導致命令卡死。-F用來顯示文件的真實身份,所以ls卡死的原因應該是某個文件或文件夾損壞了。

因其一直用gnome桌面環境,之前也出現gnome下顯示問題,通過重裝軟件包並重啓解決。這次的現象應該也是某個進程出了問題,用root用戶將其進程kill掉估計就可以了:ps aux | grep username | grep -v | awk '{print $2}' | xargs -n1 kill -9

再次用其賬號密碼登錄,問題解決。

本次解決問題簡單粗暴,想要找到出問題的文件建議用strace命令。strace跟蹤系統調用,能很快定位到具體出問題的文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章