Gentoo
Gentoo 的 openrc 永遠掛在“記憶體服務依賴項……”
每當我啟動我的 gentoo 筆記型電腦時,openrc 就會永遠掛在“記憶體服務依賴項…”階段。這會導致我的電腦無法啟動,除非我使用 sysrq 密鑰將其殺死並手動啟動系統。
ps
用作診斷工具時,我發現grep
和cut
程序(腳本的子級)掛起,使用gendepends.sh
0% CPU。在呼叫openrc default
.無論如何,我可以使用許多方法來解決這個問題,但我想知道最可能的原因並正確解決它。
當我嘗試手動解決依賴關係時,這是 pstree 的相關輸出:
| | `-doas /lib/rc/bin/rc-depend -u | | `-rc-depend -u | | `-gendepends.sh /lib64/rc/sh/gendepends.sh | | `-gendepends.sh /lib64/rc/sh/gendepends.sh | | `-gendepends.sh /lib64/rc/sh/gendepends.sh | | |-cut -d = -f 2 | | |-grep pid | | |-tr -d \\" | | `-tr -d [:space:]
在
gendepends.sh
中,這些命令在任何地方都沒有提到,所以我假設它們是從另一個由它提供的腳本呼叫的。編輯:我現在已經解決了這個問題。原來它是由一個舊的 init 腳本引起的,該腳本由於某種原因仍然存在於我的 initscripts 目錄中。刪除腳本解決了這個問題。感謝您的建議。
這些命令不會無處不在。它們一定是由一些初始化腳本呼叫的,但可能參數錯誤或期望不存在的數據。我可以想像他們等待一些沒有提供的輸入。
在您的輸出中
ps -ef
找到父程序 (PPID) 的 ID,這可能是罪魁禍首;您也可以嘗試pstree
獲得更好的概述。嘗試找出呼叫命令的腳本行,也許您可以找出程序的原因,從而導致整個引導過程掛起。如果您無法指出問題,則將輸出添加
ps -ef
到您的問題中(您可以將其縮短為掛起命令及其父級,直到 PID 0),以及 init 腳本(如果涉及)。