Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Как отловить и убить зависший процесс?  (Прочитано 8963 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sander-007

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
Добрый день, я использую Ubuntu server 10.10 у меня он используется как фильмотека и система спутникового приема. Установлено 7 спутниковых карт. Управляется все это хозяйство tvheadend. Во время работы создается несколько процессов tvheadend. Периодически один из них подвисает и блокирует нормальную работу одной из карточек. Как мне его выявить своевременно и убить не трогая другие процессы?

rapidsp

  • Гость
Re: Как отловить и убить зависший процесс?
« Ответ #1 : 18 Августа 2011, 15:17:56 »
Ну вопервых в syslog.
Может быть у tvheadend есть включение отладочного лога? Надо уточнять у разработчика.
А карта блокируется одна и та же? Может аппаратная проблема?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Как отловить и убить зависший процесс?
« Ответ #2 : 18 Августа 2011, 15:29:38 »
Если в логах ничего внятного не будет, то мониторить информацию о процессах (память, процессорное время, прочие ресурсы).
На основании полученных данных выявить разтличия между повисшим процессом и остальными.
Дальше оформить скриптом рестарт/убиение процесса в зависимости от условий (или просто по расписанию, если условия не получится определить) и засунуть в cron.

Оффлайн sander-007

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
Re: Как отловить и убить зависший процесс?
« Ответ #3 : 18 Августа 2011, 15:46:19 »
Нет карта меняется, я думал может есть какая то системная команда которая возвращает состояние процесса. Найти такую я не смог. Смотрел в сторону всяческих kill но мне надо отловить висящий а не убить все. И вообще это реально убить один экземпляр проги или она по любому вся убьется?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Как отловить и убить зависший процесс?
« Ответ #4 : 18 Августа 2011, 16:14:41 »
ps -eo pid,fname,stat,%mem,%cpu --sort %cpu
man ps

И вообще это реально убить один экземпляр проги или она по любому вся убьется?
Это зависит от реализации приложения, по-разному бывает, надо пробовать киллять по pid.

Оффлайн sander-007

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
Re: Как отловить и убить зависший процесс?
« Ответ #5 : 18 Августа 2011, 16:37:45 »
ps -eo pid,fname,stat,%mem,%cpu --sort %cpu

по этой команде он мне выводит список процессов, но tvheadend в этом списке в едиснственном экземпляре, а в htop их больше 20, начиная с 7051 (его команда вывела) и кончая 7822.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Как отловить и убить зависший процесс?
« Ответ #6 : 18 Августа 2011, 16:56:58 »
Нити, что ли?
Посмотрите в мане опцию, чтобы отображались нити (threads).

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Как отловить и убить зависший процесс?
« Ответ #7 : 18 Августа 2011, 16:57:48 »
А так ?
ps -ef | grep "tvheadend"

Оффлайн sander-007

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
Re: Как отловить и убить зависший процесс?
« Ответ #8 : 18 Августа 2011, 17:04:44 »
aleks@TV:/dev/dvb$ ps -ef | grep "tvheadend"
hts        940     1 11 17:00 ?        00:00:18 /usr/bin/tvheadend -f -u hts -g                                      video
aleks     1309  1252  0 17:03 pts/0    00:00:00 grep --color=auto tvheadend
aleks@TV:/dev/dvb$


Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Как отловить и убить зависший процесс?
« Ответ #9 : 18 Августа 2011, 17:19:15 »
Понятно.
sudo ps -ef | grep "tvheadend" | grep -v "grep"
Если результата, не будет, можно
по родительскому PID всех форков взять за жабры.
« Последнее редактирование: 18 Августа 2011, 17:47:05 от alexander.pronin »

Оффлайн sander-007

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
Re: Как отловить и убить зависший процесс?
« Ответ #10 : 18 Августа 2011, 17:33:23 »
aleks@TV:~$ sudo ps -ef | grep "tvheadend" | grep "grep"
aleks     1282  1231  0 17:32 pts/0    00:00:00 grep --color=auto tvheadend
aleks@TV:~$

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Как отловить и убить зависший процесс?
« Ответ #11 : 18 Августа 2011, 17:40:07 »
aleks@TV:~$ sudo ps -ef | grep "tvheadend" | grep -v "grep"
aleks     1282  1231  0 17:32 pts/0    00:00:00 grep --color=auto tvheadend
aleks@TV:~$

А теперь,если сделать
sudo ps -ef | grep "1282" | grep -v "grep"
Если получится, то увидите всех.
« Последнее редактирование: 18 Августа 2011, 17:47:43 от alexander.pronin »

Оффлайн sander-007

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
Re: Как отловить и убить зависший процесс?
« Ответ #12 : 18 Августа 2011, 17:44:14 »
aleks@TV:~$ sudo ps -ef | grep "tvheadend" | grep "grep"
aleks     1296  1246  0 17:44 pts/0    00:00:00 grep --color=auto tvheadend
aleks@TV:~$ sudo ps -ef | grep "1282" | grep "grep"
aleks     1299  1246  0 17:44 pts/0    00:00:00 grep --color=auto 1282
aleks@TV:~$
« Последнее редактирование: 18 Августа 2011, 17:45:54 от sander-007 »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Как отловить и убить зависший процесс?
« Ответ #13 : 18 Августа 2011, 17:50:11 »
-v куда пропало.
Проверьте все начала. Или так.
ps -ef | grep "tvheadend" | grep -v "grep"
затем еще раз с полученным PID, вместо "tvheadend"

Оффлайн sander-007

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
Re: Как отловить и убить зависший процесс?
« Ответ #14 : 18 Августа 2011, 17:51:54 »
aleks@TV:~$ ps -ef | grep "tvheadend" | grep -v "grep"
hts        930     1 12 17:42 ?        00:01:05 /usr/bin/tvheadend -f -u hts -g video
aleks@TV:~$ sudo ps -ef | grep "930" | grep "grep"
aleks     1422  1246  0 17:51 pts/0    00:00:00 grep --color=auto 930
aleks@TV:~$

 

Страница сгенерирована за 0.097 секунд. Запросов: 25.