關於libc.so.6誤刪除緊急恢復的方案
編者在一次實際生產下不小心將
libc.so.6
變成了libc.so.6.bak。當時沒有發覺有什麼不妥,但是在後面的時候,發現很多命令都無法使用。為了以後方便解決,所以將解決的方法記錄。
root使用者下產生的libc.so.6問題解決方法
一、 執行 mv /lib/libc.so.6 /lib/libc.so.6.bak
導致命令無法使用
如果是root使用者執行了 mv /lib/libc.so.6.bak /lib/libc.so.6.bak
[[email protected] ~] mv /lib/libc.so.6.bak /lib/libc.so.6
二、誤刪除了 /lib/libc.so.6 檔案(或者是/lib64/libc.so.6)
其實可以發現,libc.so.6其實是一個連結檔案,所以我們只要將其連結回去就可以解決問題。
[[email protected] ~] LD_PRELOAD=/lib/libc-2.12.so ln -s /lib/libc-2.12.so libc.so.6
# 注意 libc-2.12.so 這個檔案,得根據個人實際情況進行替換
# 預防不生效,我們可以使用source
[[email protected] ~] source /etc/profile
[[email protected] ~] source ~/.bashrc
所以說,如果你是在root使用者下進行的操作,那麼你是幸運的,畢竟/lib(lib64)下的屬組屬主都是root,所以儘管libc.so.6丟失,mv、cp、ln等命令都還是可以正常使用的。
那如果是在普通使用者下,不小心將 libc.so.6
共享動態庫做了以上的操作怎麼辦?
普通使用者誤操作libc.so.6的解決辦法
一、嘗試將普通使用者提權為超級使用者(未必可行),此操作可進行百度操作步驟。
二、嘗試root使用者的步驟二,但是考慮到/lib (或者/lib64) 下的屬主屬組是root,libc.so.6
丟失,導致外部命令都無法使用。如sudo , su 等命令。
三、 使用光碟映象救急模式恢復 libc.so.6
檔案,具體步驟如下:
(1) 利用系統光碟 建議是跟所使用的linux系統版本一致燒錄出來的光碟
如果沒有可以☞ “http://vault.centos.org” 下載對應的系統版本進行製作映象
開機啟動時,選擇 第三啟動項
(2) 語言的話是不支援中文的,所以只能選擇英語。當然,你會其他的語言也是可以的,所以這裡的就選擇 English
選項
(3) 這步選擇的是鍵盤的型別,選擇 us
選項
(4) 因為這不涉及到網路的事情,所以這裡選擇 No
選項
(5) 選擇 Continue
選項繼續
(6) 這個步驟是告知使用者,系統掛載在哪,只要預設選擇 OK
選項
(7) 這個步驟是二次告知使用者,系統掛載在哪,只要預設選擇 OK
選項
(8) 這裡我們選擇 Shell Start shell
選項
(9) 最後我們會看到類似字元終端的命令列介面,然後按下圖操作,操作完成後,執行 reboot
命令即可。
四、如果到這裡,都還不能解決libc.so.6丟失的問題,那麼,最壞的結果就是重灌系統,但是 如果是生產環境下的機器,切記先進備份,然後將資料遷移到其他機器,確保業務未受影響方可重灌。
感謝閱讀,本文旨在提供參考,如有錯誤,歡迎大家指正。幫助編者不斷的改進!