最近,我的运行 Raspberry Pi OS 的 Raspberry Pi 在连续正常运行 2 个多月(无头模式)后似乎突然停止工作,因为它不再响应 SSH 登录请求。当将其连接到监视器并手动启动它时,启动过程看起来很好(没有异常的 systemd 消息等)。
启动完成后,我注意到这一点:
虽然所有内部 Bash 命令都可以正常工作,例如echo
、if
条件、while
循环等,但任何其他命令都不再返回。这意味着:当输入ls
、touch
、cat
、nano
等nslookup
并按 时Enter
,没有任何反应,系统也不会返回到命令提示符(仅可见闪烁的光标)。
有时,启动时,登录过程也无法完成,即在该Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
行之后没有出现命令提示符。
无论哪种情况,Raspberry 都不会冻结或崩溃完全但是,因为我按下的所有键仍然显示在监视器上。REISUB
也有效(但不能解决问题)。
我将 SSD(我使用的是 SSD,而不是 SD 卡)插入笔记本电脑,看看它是否已损坏,但我找不到任何证据,因为所有文件都可以读取和写入。此外,还剩下 85 GB 空间。我觉得奇怪的是,不再写入任何日志文件,尤其是/var/log/boot.log
和var/log/kern.log
。
我尝试将SSD插入不同的USB插槽,但没有成功。
可能是什么原因造成的?我怎样才能将系统恢复到正常运行状态?
请注意,3 月 5 日之后我已无数次尝试启动和登录。
编辑
pi@raspberrypi:~$ shopt -s failglob nullglob; printf '%s\n' *
certs
Desktop
Documents
Downloads
Music
Pictures
Public
snap
Templates
Videos
pi@raspberrypi:~$ echo $PATH
/home/pi/.nvm/versions/node/v21.5.0/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/snap/bin:/usr/local/go/bin
_ [system hangs]
Alt+SysRq+R E I S U B
pi@raspberrypi:~$ trap -p
pi@raspberrypi:~$ while IFS= read -r l; do printf '%s\n' "$l"; done < /dev/kmsg
_ [system hangs]
Alt+SysRq+R E I S U B
pi@raspberrypi:~$ echo $LD_PRELOAD
_ [system hangs]
Alt+SysRq+R E I S U B
pi@raspberrypi:~$ while IFS= read -r l; do printf '%s\n' "$l"; done < /proc/self/mountinfo
[see output in screenshot]
pi@raspberrypi:~$ echo OK
OK
pi@raspberrypi:~$ (echo OK)
OK
_ [system hangs]
Alt+SysRq+R E I S U B
pi@raspberrypi:~$ /bin/bash --norc
_ [system hangs]
Alt+SysRq+R E I S U B
[login once again does not finish]
Alt+SysRq+R E I S U B
pi@raspberrypi:~$ exec /bin/bash --norc
_ [system hangs]
Alt+SysRq+R E I S U B
pi@raspberrypi:~$ ls &
_ [system hangs]
Alt+SysRq+R E I S U B
pi@raspberrypi:~$ dir() (shopt -s failglob nullglob; printf '%s\n' *)
pi@raspberrypi:~$ dir &
certs
Desktop
Documents
Downloads
Music
Pictures
Public
snap
Templates
Videos
[1]+ Done dir
pi@raspberrypi:~$ while IFS= read -r l; do printf '%s\n' "$l"; done < /proc/$!/stack
-bash: /proc/2854/stack: File or directory not found
pi@raspberrypi:~$ ls &
[1] 5808
pi@raspberrypi:~$ certs Desktop Documents Downloads Music Pictures Public snap Templates Videos
[1]+ Done ls --color=auto
pi@raspberrypi:~$ while IFS= read -r l; do printf '%s\n' "$l"; done < /proc/$!/stack
-bash: /proc/5808/stack: File or directory not found
pi@raspberrypi:~$ cd Downloads
pi@raspberrypi:~/Downloads $ ls
AdGuardHome_linux_arm64.tar.gz nginx-1.25.3.tar.gz
pi@raspberrypi:~/Downloads $ sudo su adguard
adguard@raspberrypi:/home/pi/Downloads $ exit
pi@raspberrypi:~/Downloads $ nslookup example.org
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: example.org
Address: 93.184.216.34
Name: example.org
Address: 2606:2800:220:1:248:1893:25c8:1946
pi@raspberrypi:~/Downloads $ ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=57 time=21.4 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=57 time=18.2 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=57 time=16.5 ms
^C
--- 1.1.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 16.485/18.687/21.404/2.040 ms
pi@raspberrypi:~/Downloads $ htop
[see screenshot]
pi@raspberrypi:~/Downloads $ sudo reboot
pi@raspberrypi:~ $ ls
_ [system hangs]
Alt+SysRq+R E I S U B
pi@raspberrypi:~ $ ls() (shopt -s failglob nullglob; printf '%s\n' *)
-bash: Syntax error at unexpected symbol "("
pi@raspberrypi:~ $ ls
_ [system hangs]
Alt+SysRq+R E I S U B
pi@raspberrypi:~ $ ls() (shopt -s failglob nullglob; printf '%s\n' *)
-bash: Syntax error at unexpected symbol "("
_ [system hangs]
Alt+SysRq+R E I S U B
pi@raspberrypi:~$ dir() (shopt -s failglob nullglob; printf '%s\n' *)
_ [system hangs]
正如您所看到的,系统在短时间内工作得很好(包括 NGINX、AdGuard Home、SSH、Uptime Kuma 等),但重新启动后就不再工作了。
我在 systemd 屏幕日志中注意到的一件事(但之前在 Raspberry Pi 仍然工作时从未明确注意到)是NetworkManager-wait-online.service
无法启动 ( 1min 10s / no limit
)。不确定这是否不寻常。