Я только что закончил установку 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:
[...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. Я просто загрузил .iso со страницы загрузок Ubuntu вчера вечером, установил его через USB и установил все последние обновления. После установки я добавил несколько других приложений (текущий Nvidia, VirtualBox, Смелость, Смелая, Google Chrome и VLC), но не заметил эту проблему с PS до сейчас.
Аппаратные спецификации: Intel i7-3930K 3.20 ГГц, 16 ГБ RAM, NVIDIA GeForce GT 680 (304,88 драйвера).
Кто-либо еще испытал эту проблему прежде? Существует ли обходное решение или доступный патч ядра?
Вы используете Kerberos? У меня была такая же проблема, когда я сделал это изменение в /etc/krb5.conf...
[libdefaults]
default_realm = MYREALM
dns_lookup_realm = true
... до ...
[libdefaults]
default_realm = MYREALM
dns_lookup_realm = false
У меня были проблемы с зависанием Firefox, и я подумал, что это может быть решением. Перезагрузка не устранила проблему «ps зависания», но отмена этого изменения и перезагрузка сделали.