Как уничтожить процесс, который не может быть уничтожен без перезагрузки?

file -s /path/to/device определит файловую систему на диске/разделе/части.

А-ля:

[root@node2 ~]# file -s /dev/mapper/VolGroup00-LogVol00
/dev/mapper/VolGroup00-LogVol00: Linux rev 1.0 ext3 filesystem data (needs journa recovery) (large files)
[root@node2 ~]# file -s /dev/mapper/coraid--pool-coraid--lv1 
/dev/mapper/coraid--pool-coraid--lv1: Linux GFS2 Filesystem (blocksize 4096, lockproto lock_dlm)
[root@node2 ~]# file -s /dev/mapper/coraid--pool-coraid--lv2 
/dev/mapper/coraid--pool-coraid--lv2: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)

по крайней мере, на Linux это делает.

11
21.12.2013, 00:50
4 ответа

У Вас нет зомби. cat /proc/$PID/cmdline не имел бы никакой проблемы с зомби. Если kill -9 не закрывает программу, это означает, что программа делает некоторую бесперебойную операцию ввода-вывода. Это обычно указывает на одну из трех вещей:

  • сетевая файловая система, которая не отвечает;
  • ошибка ядра;
  • аппаратная ошибка.

Утилиты такой как ps может зависнуть, если они пытаются считать некоторую информацию, такую как исполнимый путь процесса, что ядро не предусматривает одну из причин выше.

Попробовать cat /proc/16181/syscall видеть, что обрабатывает 16181, делает. Это может или не может работать в зависимости от того, насколько уведенный Ваша система.

Если проблемой является сетевая файловая система, Вы можете к размонтированию силы она, или заставить ее прибыть онлайн. Если проблемой будет ядро или аппаратная ошибка, что можно сделать, то будет зависеть от природы ошибки. Перезагрузка (и обновление до фиксированного ядра или замена поврежденных аппаратных средств) настоятельно рекомендуются.

22
27.01.2020, 19:57

Другие ответы предполагают, что это процессы-зомби. Процесс-зомби является процессом, который закончил работать, но находится все еще в таблице процессов в случае, если родитель хочет знать статус выхода. Они нормальны, и init автоматически очистит процессы-зомби, которые присвоены ему.

Процессы-зомби никогда не должны заставлять ничего зависать, таким образом, это кажется, что это не может быть Вашей проблемой. Если это - системный вызов или зависание драйвера, то процесс может быть в непрерываемом состоянии. Здесь существует хорошее объяснение.

7
27.01.2020, 19:57
  • 1
    Слишком много процессов-зомби могут предотвратить fork от следования (когда трудно nrpoc достигнут), потому что они все еще занимают место в таблице процессов. –  dhchdhd 28.04.2017, 04:56

Найти процессы-зомби на Linux:

PS $ axo статистика, ppid, pid, коммуникация | grep-w более не существующий

<Более не существующий> Проклятый Зомби Z 555 10242

Во-первых, можно попытаться отправить сигнал SIGCHLD в родительский процесс зомби с помощью команды уничтожения. Обратите внимание, что вышеупомянутая команда дает Вам PPID (PID родительского процесса) каждого зомби. В нашем примере PPID зомби 555.

$ sudo уничтожают-s SIGCHLD 555

Если процесс-зомби все еще не уходит, можно уничтожить родительский процесс (например, 555) зомби.

$ sudo уничтожают-9 555

После того как его родительский процесс уничтожается, зомби будет принят процессом init, который является родителем всех процессов в Linux. Процесс init периодически звонит wait() пожинать любой процесс-зомби.

2
27.01.2020, 19:57

Можно только уничтожить зомби путем уничтожения его родителя. Процесс-зомби высвободил все свои средства и ожидает его статуса выхода, который будет взят его родителем. Это становится зомби, когда родитель не выполняет a wait взять статус выхода от его ребенка. Когда Вы уничтожаете родителя зомби, init берет статус выхода, и зомби наконец умирает.

1
27.01.2020, 19:57
  • 1
    , Таким образом, Вы захотите, чтобы я уничтожил init? Это не ясно из вопроса извините hehe, но родитель, кажется, init :( Я отредактировал вопрос. –  Sam Stoelinga 01.07.2013, 06:40
  • 2
    Нет, мы хотим, чтобы Вы не попытались уничтожить зомби. Вы не можете уничтожить зомби. Этот FAQ так же стар как сам Unix. –  tripleee 01.07.2013, 07:56
  • 3
    @tripleee: Да это - то, что я понял. Возможно, то, что я имею, не является зомби. htop не работает и кошка/proc/$pid/cmdline, или ls/proc/$pid/также не работает. Обычно этого не происходит с зомби вот почему, я спросил здесь, это не типичная проблема imo. Я проверил несколько ответов, которые все говорят Вам уничтожать родителя, который является init в моем случае или к перезагрузке. –  Sam Stoelinga 01.07.2013, 08:48
  • 4
    "Уничтожает родителя", способ пожинать постоянный зомби. Вы не можете уничтожить init. Если зомби повторно порождается под init, Вы не можете уничтожить его. перезагрузке –  tripleee 01.07.2013, 09:08

Теги

Похожие вопросы