システムが壊れた・・・・
しかもこんな単純なコマンドで・・・
[root@sys system]# ldd /lib/libdl.so /bin/sh: error while loading shared libraries: /lib/libdl.so.2: file too short
後で分かったことだけど、ファイルが0バイトになってた。
サービスがどんどん死んでいく・・・
修復方法探し中・・・
よくよく作業ログを見ると、
[root@sys system]# ldd /lib/security/pam_userdb.so libc.so.6 => /lib/tls/libc.so.6 (0x00a3b000) libpam.so.0 => /lib/libpam.so.0 (0x00263000) /lib/ld-linux.so.2 (0x0069c000) libdl.so.2 => /lib/libdl.so.2 (0x00f4e000) libaudit.so.0 => /lib/libaudit.so.0 (0x00663000) [root@sys system]# ldd /lib/libpam.so.0 libc.so.6 => /lib/tls/libc.so.6 (0x006b5000) libdl.so.2 => /lib/libdl.so.2 (0x007e2000) libaudit.so.0 => /lib/libaudit.so.0 (0x00a35000) /lib/ld-linux.so.2 (0x0069c000) [root@sys system]# ldd libdl.so.2 => /lib/libdl.so.2 /bin/sh: error while loading shared libraries: /lib/libdl.so.2: file too short
うわーん。泣くに泣けないよぉ。原因は分かったけど。。。
正直何でコピペして実行したのか分からない。
とりあえず、サーバのOSはRHEL4.4だけど、手元にCDが無いので、CentOS4.5のCDから起動して、boot:プロンプトで、linux rescueをする。(レスキューモード)
ファイルシステムをマウントするか聞かれるので、今回はふつーにマウント。
それから、ftpコマンドが使えるようなので、別のRHEL4.4マシンにアクセスして、libdl-2.3.4.so(実体の方)を取得。
パーミッション(755)と所有者(root:root)を確認して、自動マウントされた/mnt/sysimage/lib にコピー。
あとはとりあえずLANケーブルを抜いてから再起動。(exitしたら再起動になる)
無事にサーバが立ち上がり、ようやくリモートからログインできるようになる。ふぅ。
教訓:コピペは思わぬ災難を招くこと有り。注意して使うべし。
追記:qmailで動いていたせいか、qmail本体で蓄えられていたメールキューは無事だった。再起動後に自動で再配送できて一安心。