在机器上出现一个很诡异的现象,使用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/
发表评论