我刚刚在一台全新的电脑上安装了 Ubuntu 13.04,并注意到在终端中执行“ps aux”会导致它在显示进程列表时中途挂起:
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 27076 2872 ? Ss 15:20 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 15:20 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 15:20 0:00 [ksoftirqd/0]
[...trimmed...]
root 1207 0.0 0.0 20972 996 tty6 Ss+ 15:20 0:00 /sbin/getty -8 38400 tty6
root 1219 0.0 0.0 70428 2812 ? Ss 15:20 0:00 /usr/sbin/cups-browsed
...它就停在那里,没有返回到命令提示符。按 Ctrl-C 尝试中止列表不会终止 ps,只会在终端中显示 ^C。
出于好奇,我对其运行了 strace,发现 ps 在尝试获取 anacron 进程的命令行时阻塞了 read() 调用:
[...trimmed...]
write(1, "root 1207 0.0 0.0 20972 "..., 91root 1207 0.0 0.0 20972 996 tty6 Ss+ 15:20 0:00 /sbin/getty -8 38400 tty6
) = 91
stat("/proc/1219", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
open("/proc/1219/stat", O_RDONLY) = 6
read(6, "1219 (cups-browsed) S 1 1219 121"..., 1023) = 193
close(6) = 0
open("/proc/1219/status", O_RDONLY) = 6
read(6, "Name:\tcups-browsed\nState:\tS (sle"..., 1023) = 777
close(6) = 0
open("/proc/1219/cmdline", O_RDONLY) = 6
read(6, "/usr/sbin/cups-browsed\0", 131072) = 23
read(6, "", 131049) = 0
close(6) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=331, ...}) = 0
write(1, "root 1219 0.0 0.0 70428 "..., 88root 1219 0.0 0.0 70428 2812 ? Ss 15:20 0:00 /usr/sbin/cups-browsed
) = 88
stat("/proc/1239", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
open("/proc/1239/stat", O_RDONLY) = 6
read(6, "1239 (anacron) D 1 1239 1239 0 -"..., 1023) = 189
close(6) = 0
open("/proc/1239/status", O_RDONLY) = 6
read(6, "Name:\tanacron\nState:\tD (disk sle"..., 1023) = 772
close(6) = 0
open("/proc/1239/cmdline", O_RDONLY) = 6
read(6,
顺便说一句,尝试这样做也会导致挂起:
$ cat /proc/1239/cmdline
我发现了其他人发布的其他一些帖子也提到了这种特殊现象,但似乎没有人找到解决方案。
https://unix.stackexchange.com/questions/10980/suggestions-needed-to-debug-why-ps-ef-gets-stuck https://serverfault.com/questions/257764/suggestions-needed-to-debug-why-ps-ef-gets-stuck
这是几乎全新安装的 Ubuntu 13.04。我昨晚刚从 Ubuntu 下载页面下载了 .iso,通过 USB 安装了它,并安装了所有最新更新。安装后,我添加了几个其他应用程序(nvidia-current、VirtualBox、Audacity、Audacious、Google Chrome 和 VLC),但直到现在才注意到 ps 的这个问题。
硬件规格:Intel i7-3930K @ 3.20GHz、16GB RAM、Nvidia GeForce GTX 680(304.88 驱动程序)。
以前有人遇到过这个问题吗? 有解决方法或内核补丁可用吗?
答案1
您使用 kerberos 吗?我在 /etc/krb5.conf 中进行此更改时遇到了同样的问题...
[libdefaults]
default_realm = MYREALM
dns_lookup_realm = true
...到...
[libdefaults]
default_realm = MYREALM
dns_lookup_realm = false
我遇到了 Firefox 挂起的问题,我认为这可能是解决方案。重新启动无法解决“ps 挂起”问题,但恢复该更改并重新启动可以解决。