Модераторы: powerfox, ZeeLax

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> При демона процесса, становится zombie 
V
    Опции темы
Rickert
Дата 14.5.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Есть задача: погасить демона и запустить его заново, уже с новыми настройками. При попытке убить, он переходе в состояние zombie и соотвественно запуск повторный не возможен.
Альт линукс.

ЗЫ
Я не так давно с линуксом занимаюсь, и поэтому думаю, что на самом деле кучу ещё информации должен был вам сообщить, поэтому переспросите пожалуйста и помогите разобраться.

Это сообщение отредактировал(а) Rickert - 16.5.2007, 05:34


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
bilbobagginz
Дата 14.5.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



существует не знаю насколько официальная конвенция, что процесс-демон при получении сигнала SIGHUP:
Код

/* из <bits/signum.h> линукса */
#define SIGHUP          1       /* Hangup (POSIX).  */

снова считывает конфигурационные файлы.
т.е., если демон написан корректно, его можно перестартовать при помощи сигнала hang-up:
Код

kill -HUP <ИД процесса>


удачи.



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
smalcom
Дата 15.5.2007, 03:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 494
Регистрация: 16.10.2004
Где: Dnepr

Репутация: 1
Всего: 7



бывает, что kill неснимает такие процессы тада учим команду(юзать осторожно)
killall -s KILL <name>



--------------------
What DA F...???
PM MAIL WWW Skype Jabber   Вверх
kirjanov
Дата 15.5.2007, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2006
Где: Dark wood of erro r

Репутация: 5
Всего: 15



если состояние будет TASK_UNINTERRUPTIBLE  то не снимает ) хотя init переиодически вроде как делает переназначение зомби на себя/ 

PM MAIL   Вверх
MAKCim
Дата 15.5.2007, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 21
Всего: 207



Цитата(kirjanov @  15.5.2007,  09:32 Найти цитируемый пост)
если состояние будет TASK_UNINTERRUPTIBLE  то не снимает ) хотя init переиодически вроде как делает переназначение зомби на себя/ 

намучался я один раз с TASK_UNINTERRUPTIBLE  smile 
запустил mount CD-ROM-а, а он (CD-ROM) видно был не исправен (шли постоянные попытки чтения, которые завершались неудачно), никакой kill не помогал вырубить mount, физическое нажатие на кнопку привод тоже игнорировал... пришлось перезагружать систему 

Это сообщение отредактировал(а) MAKCim - 15.5.2007, 22:01


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Rickert
Дата 16.5.2007, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Мне нужно именно убить процесс kill'ом, а потом запустить заново, потому что используются сторонние программы, которые не факт что перчитают конфиги при перезапуске.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
bilbobagginz
Дата 16.5.2007, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



для начала попробуй это, чтобы знать, в debug mode.

в крайнем случае, спиши один из скриптов в /etc/init.d/
и подкрути его создавать pid файлы на все процессы, а потом их убивать, и оживлять.

удачи.


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Rickert
Дата 16.5.2007, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



В частности эксперементирую сейчас над dhcpd. Он изначально в фоне стартует, если ему передать принудительно -d, а потом в фон через &, после чего убить - то всё нормально

Цитата(bilbobagginz @  16.5.2007,  09:19 Найти цитируемый пост)
для начала попробуй это, чтобы знать, в debug mode.

Как в него перейти?
Цитата(bilbobagginz @  16.5.2007,  09:19 Найти цитируемый пост)
и подкрути его создавать pid файлы на все процессы, а потом их убивать, и оживлять.

Как это сделать?

ЗЫ
init.d нету, rc.d


Бага именно в том, когда программы, которые сами в фон уходят стартуются через daemon - при убиении становятся zombie. Может какая маза с pid файлом?

Это сообщение отредактировал(а) Rickert - 16.5.2007, 11:11


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
bilbobagginz
Дата 16.5.2007, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



в какой-то папке есть все скрипты стартования и остановки демонов.
пусть будет rc.d
возьми какой-то из них и подправь под свои нужды.

зомби это статус, когда процесс уже убит, но его ресурсы еще не уже освобождены, но "учетная записть" в таблице процессов - еще не стерта, т.е. его PID еще не может быть использован системой для создания нового процесса. запись в таблице процессов еще не стирается, пока родитель данного процесса не сделает вызов wait(PID). 
если родитель этого не делает еще, то процесс остается в статусе ZOMBIE (defunct), а если не делает вообще, то теоритически процесс может остаться так до сл. перегрузки системы.

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

для "убития" зомби, нужно убить родителя. PID родителя находится в столбце PPID в таблице ps.






--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Rickert
Дата 16.5.2007, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



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


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
kirjanov
Дата 16.5.2007, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2006
Где: Dark wood of erro r

Репутация: 5
Всего: 15



Цитата(bilbobagginz @  16.5.2007,  13:50 Найти цитируемый пост)
зомби это статус, когда процесс уже убит, но его ресурсы еще не освобождены. 

когда статус TASK_ZOMBIE - ресурсы уже освобождены, не освобожден дескриптор процесса в слябовом распределителе и структура thread_info в в стеке ядра(в 2.6.22 это чуть может отличаться)
Код

     taskstats_exit(tsk, group_dead);
920 
921         exit_mm(tsk);
922 
923         if (group_dead)
924                 acct_process();
925         exit_sem(tsk);
926         __exit_files(tsk);
927         __exit_fs(tsk);
928         exit_thread();
929         cpuset_exit(tsk);
930         exit_keys(tsk);
931 
932         if (group_dead && tsk->signal->leader)
933                 disassociate_ctty(1);
934 
935         module_put(task_thread_info(tsk)->exec_domain->module);
936         if (tsk->binfmt)
937                 module_put(tsk->binfmt->module);
938 
939         tsk->exit_code = code;
940         proc_exit_connector(tsk);
941         exit_task_namespaces(tsk);
942         exit_notify(tsk);


Это сообщение отредактировал(а) kirjanov - 16.5.2007, 19:57
PM MAIL   Вверх
bilbobagginz
Дата 17.5.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



хмм.. подправил хрень, которую сам и написал.



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Rickert
Дата 21.5.2007, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Ну хорошо, что такое zombie, само по себе  - ясно. А вопрос: как с ним бороться-то? Запускается он от init'а.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Rickert
Дата 21.5.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Оказывается, init, которым пользуется наша контора, полностью переписывался одним программером, который сейчас в отпуске. Видать он не вызывает wait(PID). Приедет, будем смотреть.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
bilbobagginz
Дата 21.5.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



интересненько он init оптимизировал.... 
расскажи как потом все закончилось!




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0583 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.