服务器交给其他人使用了几天之后,返到我手里进行检查,发现许多动态链接库不见了,包括ntfs的协议也链接不上了,所以一块ntfs的硬盘挂载错误,导致系统一直处于紧急状态,无法正常启动。
使用ldconfig检查,发现大量的.so文件为空,如下:
……
ldconfig: File /lib64/libtk8.5.so is empty, not checked.
ldconfig: File /lib64/libgfortran.so.3.0.0 is empty, not checked.
ldconfig: File /lib64/libamd.so.2 is empty, not checked.
……
ls一下发现确实是内容为空的文件。这种情况下,相应的链接库就得重装。如果逐个重装,步骤如下:
先查询该库文件属于哪个安装包:rpm -qf ....so
然后yum reinstall该安装包就好。
但是我这里丢失的库文件太多太多了,一个个弄得整到天荒地老,所以写了个自动处理脚本如下:

#/bin/bash
LDCONFIG=`ldconfig 2>&1|sort|awk '{print $3}'`

echo "$LDCONFIG" |
while read line
    do
            if [ `ls -l $line | grep -c '^l'` -ne 0 ]
                    then
                            continue
            else
                    PACKAGE=`rpm -qf $line`
                    if [ `echo "$PACKAGE" | wc -l` -eq 1 ]
                            then
                                    echo "prepare reinstall $PACKAGE"
                                    yes | yum reinstall $PACKAGE
                                    [ $? -eq 0 ] && echo "$PACKAGE reinstall success"|| echo "$PACKAGE reinstall failed"
                            else
                                    echo 'i don not know need reinstall which PACKAGE'
                    fi
            fi
done

执行上述脚本,就可以让它自动处理了。搞定之后再运行下ldconfig,就不报错了。重新挂载上硬盘重新开机,也没问题。

标签: none

添加新评论