一个 Linux 更新引发的错误。

问题描述

在 aws ssh 上,yun update 后,重启实例,发现连上服务器后,自动退出,如下图:

问题处理

登录不上服务器,只好再开一个实例,然后把坏掉的服务器磁盘挂载到新实例(这个挺简单的,停掉坏的实例,再把坏实例的磁盘 dettach,再 attach 到新磁盘),所以现在由两个磁盘:

sudo mkdir /bad
sudo mount /dev/xvdf1 /bad

接着,查看 /bad/var/log 中的日志,每个日志文件的作用,我在 wiki 中有更详细的注释 syslog.md
查看很多的日志,但没有很明显的错误,找了很久,后来在 /bad/var/log/cron 中看到了 (root) FAILED to open PAM security session (Error in service module) 也没有很明显的错误。
后来去网上类似的错误看到 /var/log/secure 这里面的错误,才发现报错了,sshd[2713]: pam_limits(sshd:session): cannot read settings from /etc/security/limits.conf: No such file or directory
所以拷贝当前系统的同名文件放进去,再把磁盘到原来的实例,重启 ssh 连接成功。

【拓展】日志文件的读取

每个日志由于是不同软件产生的,可能格式上由差异,比如下面的列表

  • last -f /var/log/btmp 系统登录日志
  • utmpdump /var/log/wtmp 系统账户登录记录, 还有可能由 utmp, 具体man wtmp
  • /var/log/lastlog 直接用 lastlog 就可以读取, 记录所有用户的登录情况
  • vim /var/log/dmesg 系统监视器弹出的那些启动内容
  • vim /var/log/secure 比如用 sudo command 执行命令,就会在这里面记录详细的命令,或者外部登录 sshd 也会有记录