在操作Linux 系統時,往往會誤删除一部分檔案或者移除軟體時将依賴的系統包個删除掉,而當時未發現。而後續在需要某些指令或者執行某些操作時才發現提示無此指令,例如Centos 下删除iptables,導緻initscripts 這個包被删除掉,而這個包提供ifup,ifdown,兩個指令,缺少該檔案會導緻網卡無法啟動。如果僅因為缺少某個指令重裝系統,成本太高。
下面就是如何來解決這個問題,需要說明的時,下面的方法僅在伺服器尚能正常運作且看可以通路網絡的情況下才可使用。如果沒有網絡,那麼需要先配置好網絡。
在Centos中,删除iptables 後,又重新開機了network服務後者伺服器,就會發現,網卡無法啟動,提示缺少ifup這個指令。需要把這個指令找回來,但是這個時候沒有網絡,就無法進行修複。
此時雖然網絡服務雖然無法啟動,但是還是可以通過手工啟動網卡來恢複網絡。
使用ifconfig eth0 up 來啟動網卡。
ifconfig eth0 172.16.0.1 netmask 255.255.255.0 #配置IP和掩碼
route add default gw 172.16.15.253 # 配置網關
此時再試會發現網絡已經恢複了,但是如何知道,ifup來屬于哪個軟體包提供呢,
這個時候找一個相同系統的機器,
使用which ifup 确定該指令的檔案路徑,通過此操作知曉ifup的路徑 /usr/sbin/ifup
然後借助 rpm -qf /usr/sbin/ifup 或者 yum provides /usr/sbin/ifup 即可查到是哪個軟體包提供的。
例如ifup 在Centos 7.4上 是由initscripts-9.49.39-1.el7.x86_64 提供。
執行 yum install initscripts 來安裝回來。
此時再嘗試重新開機network 網絡服務就可以正常重新開機。
在某些時候,我們隻是删除了某個指令,但是軟體包還在,如何處理?
這個時候,可以讓yum 重新安裝該軟體包, yum reinstall initscripts
如果Ubuntu上,遇到類似指令如何處理?
以last指令丢失為例,
先安裝 apt-file
apt-get install apt-file
安裝完成後,執行 apt-file search /usr/bin/last
此時會提示apt-file 需要更新,
執行apt-file update
然後重新執行 apt-file search /usr/bin/last
得到util-linux: /usr/bin/last
執行 apt-file install util-linux 會提示已經安裝過了,
此時就要讓其重新安裝
apt-get --reinstall install util-linux
完成後,看last 指令是不是回來了。