Автор Гілка: Як вбити процес у стані D  (Прочитано 3498 раз)

Відсутній Андрій Головинський

  • Кореспондент
  • ***
  • дописів: 141
  • Карма: +0/-0
Як вбити процес, якщо ps x пише таке:

 2278 ?        D     19:14 xmms
 2279 ?        Z      0:00 [xmms] <defunct>
 2328 ?        Z      0:00 [netstat] <defunct>


kill -9 2278 не допомагає. Як треба діяти без перевантаження машини?
Never argue with idiots. They just drag you down to their level, and then beat you with experience

Відсутній Євгеній Мещеряков

  • Дописувач
  • **
  • дописів: 65
  • Карма: +0/-0
Re: Як вбити процес у стані D
« Відповідей #1 : 2005-02-14 18:07:05 »
такі процеси вбити не можна

Відсутній Євгеній Мещеряков

  • Дописувач
  • **
  • дописів: 65
  • Карма: +0/-0
Re: Як вбити процес у стані D
« Відповідей #2 : 2005-02-14 18:10:18 »
...хоча можна спробувати позбутися причини зависання, якщо вона відома

Відсутній Андрій Головинський

  • Кореспондент
  • ***
  • дописів: 141
  • Карма: +0/-0
Re: Як вбити процес у стані D
« Відповідей #3 : 2005-02-14 18:45:10 »
 :-/
Негарно якось. Мабуть, це пов'язано із звуковою підсистемою ALSA в ядрі 2.6.10, раніше було OSS і ядро 2.4.28 і все було ОК. Треба буде поспостерігати. Це поки другий раз таке.
Never argue with idiots. They just drag you down to their level, and then beat you with experience

Відсутній iip))

  • Графоман
  • ****
  • дописів: 277
  • Карма: +0/-0
  • Перекладач KDE, openSUSE...
Re: Як вбити процес у стані D
« Відповідей #4 : 2005-02-14 19:42:24 »
Єдиний спосіб (мені відомий) знищення таких процесів - це вбити батьківський процес або нащадка.
У Вашому випадку, щоб їх знайти введіть
/usr/proc/bin/ptree 2278
"You should not be satisfied with being a victim, nor with being a survivor. You should aim to be a conqueror." "Now, go do the right thing!" Dr. Laura

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3745
  • Карма: +9/-0
  • Програміст
Re: Як вбити процес у стані D
« Відповідей #5 : 2005-02-14 19:44:08 »
Процес вже вбитий, просто запис про нього залишається в списку процесів для якоїсь цілі - наприклад щоб батьківський процес міг взнати код виходу породженого процесу або щоб драйвер міг завершити якісь свої дії з даними, які знаходяться в пам'яті цього процесу. Треба прибрати причину зависання (обновити драйвер чи програму).
[Fedora Linux]

Відсутній Євгеній Мещеряков

  • Дописувач
  • **
  • дописів: 65
  • Карма: +0/-0
Re: Як вбити процес у стані D
« Відповідей #6 : 2005-02-14 20:40:30 »
Процес вже вбитий,

Це про Z. Питання було про D.

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3745
  • Карма: +9/-0
  • Програміст
Re: Як вбити процес у стані D
« Відповідей #7 : 2005-02-15 13:12:01 »

Це про Z. Питання було про D.

Угу, я помилився:

  PROCESS STATE CODES
       D   uninterruptible sleep (usually IO)
       R   runnable (on run queue)
       S   sleeping
       T   traced or stopped
       Z   a defunct ("zombie") process

       For BSD formats and when the "stat" keyword is used, additional letters
       may be displayed:

       W   has no resident pages
       <   high-priority process
       N   low-priority task
       L   has pages locked into memory (for real-time and custom IO)
« Змінено: 2005-02-15 13:12:31 від lvm »
[Fedora Linux]

Відсутній Андрій Головинський

  • Кореспондент
  • ***
  • дописів: 141
  • Карма: +0/-0
Re: Як вбити процес у стані D
« Відповідей #8 : 2005-02-15 14:05:46 »
Висновок такий, що це помилка на системному рівні.
Бо процес звичайного користувача не зміг би отримати такий рівень доступу.
Десь помилка в процесі, який виконується з suid root
Never argue with idiots. They just drag you down to their level, and then beat you with experience

Відсутній Євгеній Мещеряков

  • Дописувач
  • **
  • дописів: 65
  • Карма: +0/-0
Re: Як вбити процес у стані D
« Відповідей #9 : 2005-02-15 15:18:01 »
Десь помилка в процесі, який виконується з suid root

Це необов'язково. Тут мабуть помилка в драйвері (напр. драйвері звукової карти).