システムが壊れた・・・・

しかもこんな単純なコマンドで・・・

[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本体で蓄えられていたメールキューは無事だった。再起動後に自動で再配送できて一安心。