Почему моя система зависает, когда я запускаю ps, w и, возможно, другие команды?

10

Я не знаю почему, но я не могу запустить команды psили wна моем компьютере с Ubuntu 10.04LTS. Я сделал трассировку для обоих, и оба остановились при чтении части одного и того же файла.

Вот результат бегаps

И вот результат дляw

Файл также останавливается при чтении ... сам? http://pastebin.com/9qRB5eHh

Что происходит?

user69239
источник

Ответы:

9

Это случилось однажды, когда сервер NFS вышел из строя.

Тот факт, что он зависает при попытке прочитать информацию о pid 17398, а pid 17398 находится в состоянии D(ожидание диска), предполагает, что это может быть причиной и для вас.

read(6, "Name:\tconvert\nState:\tD (disk sle"..., 1023) = 664
open("/proc/17398/cmdline", O_RDONLY)   = 6

Если у вас есть монтирование NFS, я думаю, что лучший вариант - попытаться восстановить работу сервера NFS.

В противном случае, umount -f <mount>может помочь.

Mikel
источник
Я думаю, перезагрузка должна исправить это, но я не хочу этого делать, так как хочу быть уверенным, что является причиной этого: P
Что mountговорит? Обратите внимание, что есть шанс, что он тоже может зависнуть (я не думаю, что должен, но я не уверен на 100%).
Микель
3

вздохи, закрытый вопрос довольно плохо, я буду пытаться напечатать это уже в третий раз, поэтому, пожалуйста, прости краткость.

Во-первых, используйте intrмонтирование NFS. Установленные по умолчанию hardNFS монтируются навсегда. softNFS монтирует ошибку после тайм-аута (что может быть глупо для временных ошибок), что intrпозволяет вам прервать зависшую операцию NFS. В самый раз.

Во-вторых, чтобы исправить эту глупую проблему, я раньше использовал глупый трюк , который, вероятно, все еще работает. Поднимает псевдоним интерфейса на loс IP - адресом в NFS сервере ( редактирование : ifconfig eth0:0 <ipaddress>). Создайте /etc/exportsфайл, содержащий строку для экспорта файловой системы, на которой вы зависли ( правка : экспортируйте файловую систему с тем же именем, что и у «зависшей» файловой системы; вам нужно будет создать тот же путь, что и примонтированный) , Запустите сервер NFS на локальном компьютере, и, надеюсь, ваша зависшая программа может выдать сообщение об ошибке «файл не найден» или «каталог не найден» или что-то в этом роде, что позволит вам продолжить работу без перезагрузки.

Не забудьте снова выключить сервер NFS и удалить псевдоним интерфейса, когда закончите.

sarnold
источник
Я использую intr NFS монтирует ... где вы видели наоборот?
user69239
Насчет "второго абзаца" я не очень хорошо понимаю ... извините! :(
user69239
@ user69239 вы не дали никаких подробностей, поэтому я предположил, что вы используете hardтип монтирования по умолчанию . :)
sarnold
@ user69239, я немного расширил абзац глупым трюком - надеюсь, теперь его легче понять. :)
sarnold
2

Я не уверен, почему акцент на NFS? Аскер работает NFS? Ничего не видел об этом.

В любом случае, это очень странная проблема, так как ее / proc. Попробуйте следующее, чтобы получить больше информации о проблеме:

  • Перейдите в / proc и найдите другие каталоги pid и попробуйте прочитать файлы cmdline из этих каталогов.
  • Попробуйте также прочитать / proc / pid / stat, если это не сработает, я бы сказал, что у вашей системы проблемы с ядром.
  • Вы можете запустить netstat -n? Это читает из разных частей / proc, так что это может работать и будет указывать на меньшую проблему с интерфейсом proc.
  • Попробуйте перемонтировать / proc с помощью mount -o remount / proc, хотя я понятия не имею, что это будет делать в этой ситуации.

Я бы просто предложил перезагрузку. Если вы не можете прочитать материал из proc, я не уверен, что вы найдете с помощью других методов. Если это случится снова, тогда начинайте беспокоиться.

deltaray
источник
Да, я с NFS ... проблема заключается в копировании файла через систему предохранителей s3
user69239 26.02.11
fuse и nfs это разные вещи. Я думаю, вам нужно предоставить все детали, которые вы можете. Вы многое предоставили с помощью strace, но знание о вашей настройке и о том, как все это началось, является необходимым первым шагом.
Дельтарай
Проблема заключалась в том, что я выполнял массивную команду «cp» с моего хоста (небольшой экземпляр Amazon) на S3, связанный с s3f3 1.40 с помощью опции allow_other. Моя Ubuntu - это обычная базовая версия 10.10 с типичным обновлением. Ничего больше. Действительно: P
user69239