Linux系統命令找不到了,只能重裝系統?
運維時間長了,總會遇到各種難搞的問題,雖然說Linux不像windows server那樣容易出藍屏,無法啟動之類的系統問題,但也不是不會出現系統層面的故障,比如今天在群里有小伙伴遇到的
環境變量問題,導致大部分命令無法使用,環境變量臨時修改不生效,也沒辦法,最終打算重做系統
重做系統,拋開數據不說,系統上所有環境都要重新搭建,當然不是最佳選擇
其實系統層面的問題,不管是windows還是linux,都有一種簡單的方式,就是鏡像修復,windows和linux都提供一種通過鏡像修復系統的功能
我直接拿虛擬機來和CentOS7系統來做個簡單演示
工具:Hyper-v/CentOS7鏡像
要演示修復,我先得把系統搞掛,所以先做個快照
做完快照,做個很多人都做過的操作,rm -rf,把/bin目錄下的命令都刪掉
有人說bin目錄刪掉之后,ls命令還可以使用
whereis查一下,你就會發現,/usr/bin目錄下也存在ls命令,在CentOS6之前,/usr/bin和/bin是分開的,/bin下是系統級命令,/usr/bin下是用戶級別以及應用安裝后可執行命令,到CentOS7之后,/bin目錄成了/usr/bin目錄的軟鏈,兩個合并了,所以上面刪除了的是軟鏈,接著,重新刪一下/usr/bin下命令都干掉
ok,完美的玩了一把rm -rf ,命令全都執行不了了,開始修復
這里用的是hyper-v虛擬機,所以把鏡像掛載到cd/dvd之后,重啟
掛上去,可以在設置里面看下
之后重啟服務器,進修復模式
進來之后,有幾個選項
- Install CentOS Linux 7 in basic graphics mode
這個選項可讓您在安裝程序無法為您的顯卡載入正確的驅動程序的情況下使用圖形模式安裝
- Rescue a CentOS Linux system
當安裝完成的CentOS無法開機時,選擇此項目進行修復
- Run a memory test
運行內存測試
- Boot from local drive
從本地磁盤引導
我們這肯定是修復系統,所以選擇Rescue進入
這里解釋很清楚,修復就是通過把原來的系統掛載在/mnt/sysimage下面,然后你可以做任何操作,我們直接選1,就是繼續這個操作,2是以只讀的方式,因為我這里是命令刪掉了,我要拷貝文件,所以肯定不能選只讀,其他兩個選型就不多說了
現在就進入救援模式了,我們看下原來的系統,也就是/mnt/sysimage下面,是不是我原來的系統
可以看到,正是我自己的系統文件,bin目錄也確實沒有,我們現在做修復,把現在的/usr/bin下的文件拷貝過去,并重新創建/bin軟鏈
拷貝完之后,關機,把光盤彈出,重新啟動進入系統,重啟之后會做一次文件系統的恢復,需要比較長的時間,耐心等著就好
重啟之后,即可登錄系統,正常使用命令,不過如果之前有安裝應用的話,因為這里只是從鏡像中復制了系統基礎命令,安裝后的應用命令沒辦法恢復了
僅作為一個思路,如果有系統類問題,可以通過這樣的方式進行修復
本文轉載自微信公眾號「運維研習社」,可以通過以下二維碼關注。轉載本文請聯系運維研習社公眾號。