在机器上出现一个很诡异的现象,使用root ssh登录机器时,在打印了“last login”时间后就卡住了。需要按ctrl+c,终端才会显示bash-2.4,而只有source ~/.bashrc后,才会显示root的主目录。


试了一下手动执行source /etc/profile,也卡住了。因此可以断定,是登录时加载/etc/profile卡住,导致的SSH登录卡住。


试着手动执行了/etc/profile中的代码,发现运行到:


for i in /etc/profile.d/*.sh ; do

    if [ -r "$i" ]; then

        if [ "${-#*i}" != "$-" ]; then 

            echo $i

            echo "1"

            . "$i"

        else

            echo $i

            echo "2"

            . "$i" >/dev/null

        fi

    fi

done


卡住的。这一段代码,是从/etc/profile.d/取出所有的ssh文件,并进行执行。可以看到,我在里面加入了一些打印指令。


所以,可以清晰的看到是执行:/etc/profile.d/abrt-console-notification.sh卡住的。


再研究/etc/profile.d/abrt-console-notification.sh文件,最终确定,是在执行:


abrt-cli status --since="$SINCE" 2> /dev/null


这一句时卡住的。


使用systemctl status abrtd.service 查看abrtd服务状态,可以看到abrt的.lock文件被某个进程锁住了。kill掉该进程,问题解决,SSH登录也正常了。

原文链接:https://blog.csdn.net/rongyongfeikai2/article/details/104039985/