CentOS系統中,lib目錄下的庫對系統的正常運行起着很是關鍵的做用。一旦誤操做將致使系統癱瘓。linux
/lib64被重命名
故障表現
因爲操做失誤,把/usr/lib64重命名成了/usr/lib64.bak,結果發現,在運行全部外置命令的時候報錯:shell
-bash: /bin/mv: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directorybash
-bash: /bin/cp: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directoryssh
-bash: /bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directoryide
-bash: /usr/bin/ssh: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
想使用mv把文件重命名回來已經不行了,就連從新ssh遠程都遠程不了。操作系統
修復方法
方法一
光盤修復,安裝glibc,若是機器容許重啓的話文檔
方法二
系統通常狀況下會設置LD_LIBRARY_PATH, LD_PRELOAD這兩個環境變量,來改變應用程序所調用庫文件的路徑。這兩個環境變量只對應用程序有效,可能會對shell命令不起做用it
由於默認的庫文件路徑/usr/lib64被改爲了/usr/lib64.bak,所以嘗試:class
export LD_LIBRARY_PATH=/usr/lib64.bak
export LD_PRELOAD=/usr/lib64.bak
cp /usr/lib64.bak /usr/lib64
方法三
在一個正常的操做系統上<咱們能夠發現/lib64/ld-linux-x86-64.so.2只是個軟鏈,真實文件是/usr/lib64/ld-2.17.so,並且這個文件自己並非庫文件,能夠簡單的認爲他是庫文件的管理程序。變量
ld-linux-x86-64.so.2是操做系統的核心,並不受LD_LIBRARY_PATH環境變量的影響。若是想改變其調用方式,能夠查看man文檔
根據使用幫助,咱們手動指定庫路徑進行調用cp命令
/lib64/ld-linux-x86-64.so.2 --library-path /lib64.bak /bin/cp /lib64.bak /lib64 -afr
誤刪除/lib64/ld-linux-x86-64.so.2
解決方法同上,刪除的是軟鏈接文件,連接回來便可
/lib64/ld-2.17.so --library-path /lib64/ld-2.17.so /bin/ln -sv /lib64/ld-2.17.so /lib64/ld-linux-x86-64.so.2/lib64被誤刪這個是致命的故障,趁沒有關閉ssh鏈接,趕忙使用內置命令while read把重要的配置文件輸出到屏幕複製粘貼出來吧,而後嘗試光盤修復