● edもviもcatも使えない危機的状況の回避
以下のように、誤ってローカルなライブラリを消してしまっただけであった。
[root@hoge objdir]# rm -rf
/usr/local/gcc4
しかしながら、ただそれだけでほとんどのコマンドが使えない。以下のように
touchやvi、edすら使えない。
[root@hoge objdir]# ed
/etc/ld.so.preload
ed: error while loading shared
libraries: /usr/local/gcc4/lib/libgcc_s.so.1: cannot open shared object
file: No such file or directory
普通はレスキューディスクで立ち上げて直すのだが、なんとリモートログイン
であった。使えるコマンドは、bashの内部コマンドと/sbin以下のコマンドだけ
で/binも使えない状態である。
この状況は、cdとechoで以下のようにようやく回避することができた。
[root@hoge etc]# cd /etc/
[root@hoge etc]# echo -e
"/lib\n/usr/lib\n/usr/local/lib" > ld.so.conf-tmp
[root@hoge etc]# echo -e "" >
ld.so.cache
[root@hoge etc]# echo -e "" >
ld.so.preload
[root@hoge etc]# /sbin/ldconfig -Nf
ld.so.conf-tmp
これで、ようやくtouchやviなどが使える状態に回復した。
[root@hoge etc]# cd /tmp/
[root@hoge tmp]# touch testfile
[root@hoge tmp]#
要するに、ld.so.preloadに書かれているライブラリは削除
する前に、先に
ld.so.preloadから除外し、さらにldconfigで全ライブラリをロードし直して
おく必要があるということであった。
戻る