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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: daemon & terminals  (Прочитано 1917 раз)

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

Оффлайн towa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
daemon & terminals
« : 06 Октября 2010, 12:35:48 »
Доброе время суток!
Пытаюсь решить задачу: есть фоновый процесс (демон mysqld скажем) и есть терминал пользователя с процессом mysql в котором выполняется SQL запрос.
Мне нужно оборвать этот терминал через демон mysqld. При выполнении запроса процесс демона mysqld нагружает процессор и я узнаю его PID, и, теперь, самое главное, как определить PID процесса mysql терминала?
понятное дело что мы можем легко узнать PID mysql непосредственно (через ps например). но нужно другое - узнать PID управляющего терминала через демон.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: daemon & terminals
« Ответ #1 : 06 Октября 2010, 12:38:08 »
ps -ef | grep ...

Оффлайн towa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: daemon & terminals
« Ответ #2 : 06 Октября 2010, 13:46:02 »
Это было первое , что пришло в голову . Но не решает проблему полностью.
смотрим:
$ ps -ef|grep mysql
root      1305     1  0 11:32 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql     3434  1305  0 12:49 ?        00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
towa    3889  3876  0 13:33 pts/1    00:00:00 mysql
towa    3977  3826  0 13:36 pts/0    00:00:00 grep mysql

мы имеем ид демона mysqld - а нам надо хапнуть процесс 3889
И,кстати, я пытался хапнуть демон  - никакой реакции.
« Последнее редактирование: 06 Октября 2010, 13:49:12 от towa »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: daemon & terminals
« Ответ #3 : 06 Октября 2010, 13:53:18 »
Можно продолжить
ps -ef | grep "\smysql$" | grep - v "grep"

Оффлайн towa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: daemon & terminals
« Ответ #4 : 06 Октября 2010, 14:13:38 »
Цитировать
grep "\smysql$"
это в случае, если нам известно, каким именем процесса управляется демон
В моем случае это не известно (mysql я привел для примера)
необходимо, чтобы команда была актуальна для любых демонов.
Ну составлять список соответствий "имядемона - имя управляющего терминла"  не интересен.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: daemon & terminals
« Ответ #5 : 06 Октября 2010, 14:25:13 »
Найти то, не знаю что
и
сделать то, не знаю что.
Где-то я уже это слышал. :idiot2:
ЗЫ. Придумайте, что хотите, а потом и будем думать дальше, как это реализовать.
« Последнее редактирование: 06 Октября 2010, 14:27:23 от alexander.pronin »

Оффлайн towa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: daemon & terminals
« Ответ #6 : 06 Октября 2010, 15:37:58 »
1.Определить процесс который сильно нагружает процессор
2.Если он является демоном, то попытаться отключить от него терминалы (если есть).

« Последнее редактирование: 06 Октября 2010, 15:40:01 от towa »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: daemon & terminals
« Ответ #7 : 06 Октября 2010, 15:48:40 »

Оффлайн towa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: daemon & terminals
« Ответ #8 : 06 Октября 2010, 16:04:26 »
прочитал. у меня почти такой же способ уничтожения процесса. но загвоздка в том, что я не хочу его грохать сразу. а для начала попытаться грохнуть подключенные терминалы.

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

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: daemon & terminals
« Ответ #9 : 06 Октября 2010, 16:11:32 »
Все решаемо, если ясно самому понять, что требуется.
Я, например, не понял, что Вы хотите.
Хотя, честно говоря, и не пытался сильно напрячь извилины. :coolsmiley:

Оффлайн towa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: daemon & terminals
« Ответ #10 : 06 Октября 2010, 16:20:43 »
все равно спасибо за ответы

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: daemon & terminals
« Ответ #11 : 06 Октября 2010, 16:39:25 »
прочитал. у меня почти такой же способ уничтожения процесса. но загвоздка в том, что я не хочу его грохать сразу. а для начала попытаться грохнуть подключенные терминалы.
У Вас тут фундаментальные ошибки.
1. К демону терминалы не подключены, на то он и демон.
2. Терминалы подключены к клиентам (это если демон поддерживает клиент-серверную архитектуру)
Клиенты могут быть и не командно-строчные, которые запросто могут обойтись без терминала.
3. Клиент может запуститься, отправить запрос, закрыть соединение и вообще выключиться. А сервер будет обрабатывать данные и нагружать процессор.
4. Демон может мониторить файловую систему и брать себе задания для работы оттуда. Как в нужном месте окажется нужный файл - одному юзеру известно, да и то, не всегда.
5. Клиент может подключиться по сети. На другой компьютер полезете, прорываясь сквозь файрволлы? ;))

Вы лучше задачу свою сформулируйте конкретней. Вы сейчас про спасение мира, а вам-то лично что надо?
« Последнее редактирование: 06 Октября 2010, 16:41:23 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн towa

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: daemon & terminals
« Ответ #12 : 06 Октября 2010, 17:10:06 »
wl,
простите за мою "неграмотность". но лично я и имел ввиду клиент mysql.
давайте я проясню по шагам:
1. запускаю терминал
2. запускаю клиент mysql
3. выполняю запрос
4.Соотвественно демон mysqld начинает обрабатывать запрос.
5.Закрываю клиент при помощи команды kill -HUP #pid и демон перестает выполнять задачу, которую получил от клиента.

я не понял почему демон перестает обрабатывать запрос после разрыва терминала?
по идее:
Цитировать
Клиент может запуститься, отправить запрос, закрыть соединение и вообще выключиться. А сервер будет обрабатывать данные и нагружать процессор.



В ЦЕЛОМ ЗАДАЧА следующая - безопасно перезагрузить любой сервис(который сильно нагружает проц/память).

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: daemon & terminals
« Ответ #13 : 06 Октября 2010, 17:17:13 »
Клиент может быть на другом хосте, на другой планете. :idiot2:
Локальный клиент - это скорее частный случай.
Пишите клиента правильно и все будет хорошо.

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: daemon & terminals
« Ответ #14 : 06 Октября 2010, 17:48:08 »
Клиент может быть на другом хосте, на другой планете. :idiot2:
Локальный клиент - это скорее частный случай.
Пишите клиента правильно и все будет хорошо.
Я и говорю - в идеологии ошибка. Надо не сервера патчить, а грамотно работу организовывать.

простите за мою "неграмотность". но лично я и имел ввиду клиент mysql.
Так надо было так и писать, а не "в общем случае", "любой сервер".

я не понял почему демон перестает обрабатывать запрос после разрыва терминала?
Соединения с клиентом, Вы хотели сказать?
Что, mysqld перестает?
Значит, он так устроен. Это логично - результат куда класть, если клиент отвалится?

В ЦЕЛОМ ЗАДАЧА следующая - безопасно перезагрузить любой сервис(который сильно нагружает проц/память).
Оповестить всех пользователей за полчаса до и
sudo service <serv.name> restartЭто наиболее безопасно для серверного оборудования.

А еще можно начальнику предоставить распечатки статистики загрузки сервера и убедить, что необходим апгрейд, т.к. имеющееся оборудование не справляется с нагрузкой.
« Последнее редактирование: 06 Октября 2010, 17:53:47 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

 

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