Узнать какие демоны запущены linux

Как составить список всех запущенных демонов?

Из моего вопроса стало ясно, что я не могу легко определить функции демона. Я читал в разных статьях и на разных форумах, что эту service —status-all команду можно использовать для вывода списка всех демонов в моей системе. Но я не думаю, что команда перечисляет все демоны, потому NetworkManager что демон, который в данный момент работает в моей Ubuntu 14.04 системе, не указан командой. Есть ли какая-нибудь команда для вывода списка запущенных демонов, или есть какой-то способ найти демонов из самого filesystem себя?

Вы уверены, что его нет в списке? Как вы проверяете? Я вижу это на своем Debian. Обратите внимание, что имя network-manager не NetworkManager .

Да. Я уверен. Ничто, связанное с термином сеть, не перечислено. Также он перечисляет, anacron что упоминается как не демон в своем скрипте инициализации.

Anacron не является демоном, это больше вопрос семантики, потому что он не запускается постоянно. Он по-прежнему работает как служба, которую вы обычно называете демонами. Пожалуйста, отредактируйте свой вопрос, и я) скажите нам, какой Ubuntu вы используете, и ii) что именно вы подразумеваете под «демоном». Какова ваша конечная цель здесь?

Я полагаю, что любой сервис, работающий в фоновом режиме, является демоном. Я упомянул, anacron потому что было сказано, /etc/init.d/anacron что это не демон. Моя цель — написать C++ программу для перечисления всех демонов, работающих в моей системе. Для этого мне нужно знать, какие файлы анализировать, чтобы получить детали.

Хорошо, если вы определяете демонов как сервисы, service —status-all это то , что вам нужно. Ubuntu, похоже, относится к NetworkManager по-другому. Я получаю оба networking и network-manager в выводе services —status-all на Debian, но только networking на Ubuntu. Я думаю, вам нужно определить, что именно вы подразумеваете под «демоном».

Понятие демона привязано к процессам , а не к файлам . По этой причине нет смысла «находить демонов в файловой системе». Просто, чтобы сделать понятие немного яснее: программа представляет собой исполняемый файл (видимый в выводе ls ); процесс — это экземпляр этой программы (видимый в выходных данных ps ).

Читайте также:  B590 lenovo драйвер linux

Теперь, если мы используем информацию, которую я дал в своем ответе , мы могли бы найти работающих демонов, ища процессы, которые выполняются без присоединенного к ним управляющего терминала . Это можно сделать довольно легко с помощью ps :

Поле tty вывода содержит «?» когда процесс не имеет управляющего терминала.

Большая проблема возникает тогда, когда ваша система работает в графической среде. Поскольку программы с графическим интерфейсом (например, Chromium) не подключены к терминалу, они также появляются в выходных данных. В стандартной системе, где root не запускает графические программы, вы можете просто ограничить предыдущий список процессами root. Это может быть достигнуто с помощью ps » -U переключателя.

Тем не менее, здесь возникают две проблемы:

  • Если root запускает графические программы, они будут отображаться.
  • Демоны, работающие без прав root, не будут. Обратите внимание, что демоны, которые запускаются во время загрузки, обычно работают от имени пользователя root.

По сути, мы хотели бы отобразить все программы без управляющего терминала, но не программы с графическим интерфейсом . К счастью для нас, есть программа для отображения процессов графического интерфейса xlsclients :! Этот ответ от slm говорит нам, как использовать его для вывода списка всех программ с графическим интерфейсом, но нам придется изменить его, так как мы хотим исключить их. Это можно сделать с помощью —deselect переключателя.

Сначала мы составим список всех программ с графическим интерфейсом, для которых у нас запущены процессы. Из ответа, который я только что связал, это делается с помощью .

$ xlsclients | cut -d' ' -f3 | paste - -s -d ',' 

Теперь ps есть -C переключатель, который позволяет нам выбирать по имени команды. Мы только что получили наш список команд, поэтому давайте добавим его в ps командную строку. Обратите внимание, что я использую —deselect впоследствии, чтобы отменить мой выбор.

$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --deselect 

Теперь у нас есть список всех процессов без графического интерфейса. Давайте не будем забывать наше правило «нет связи с TTY». Для этого я добавлю -o tty,args к предыдущей строке, чтобы вывести tty каждый процесс (и его полную командную строку):

$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --deselect -o tty,args | grep ^? 

Финал grep захватывает все строки, которые начинаются с «?», То есть все процессы без контролируемого tty. И вот, пожалуйста! Эта последняя строка дает вам все не-GUI процессы, запущенные без управляющего терминала. Обратите внимание, что вы все еще можете улучшить его, например, исключив потоки ядра (которые не являются процессами) .

$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --ppid 2 --pid 2 --deselect -o tty,args | grep ^? 

. или добавив несколько столбцов информации для чтения:

$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --ppid 2 --pid 2 --deselect -o tty,uid,pid,ppid,args | grep ^? 

Linux хранит много информации о виртуальной файловой системе, procfs. так что выполнимо «найти демонов в файловой системе» .

Читайте также:  Add group command in linux

Я написал для «старого» sysv initd, вы должны проверить, работает ли он на вашем дистрибутиве.

Хорошие демоны хорошо написали сценарии запуска в / etc / initd

При изменении уровня выполнения откуда init знает работающие демоны?

Он ищет их имена в каталоге

получить список имен оттуда

просканируйте все запущенные процессы и проверьте, находится ли имя в списке: bingo!

Чтобы просмотреть все процессы: перечислите каждый подкаталог в

Если его имя состоит из цифр, это pid запущенного процесса.

Например, статус процесса с pid 1234 — это файл

Откройте его и получите первую строку, начинающуюся с «Имя:»

(извините за неприятное форматирование, я пишу с моего мобильного телефона . )

Источник

unixforum.org

Нужно получить список всех запускаемых демонов в хронологическом порядке.
Подскажите пожалуйста.как это сделать?
Какой-то командой или есть место,где они все хранятся?
Система Debian Lenny.

Re: Получение списка всех запущенных демонов.

Сообщение BIgAndy » 03.10.2010 21:57

Нужно получить список всех запускаемых демонов в хронологическом порядке.
Подскажите пожалуйста.как это сделать?
Какой-то командой или есть место,где они все хранятся?
Система Debian Lenny.

SLEDopit Модератор Сообщения: 4814 Статус: фанат консоли (= ОС: GNU/Debian, RHEL

Re: Получение списка всех запущенных демонов.

Сообщение SLEDopit » 04.10.2010 00:16

find /var/run -name "*pid" | sed 's/.pid//;s_/var/run/__'

UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don’t do mistakes, the more bugs are in your code.

Re: Получение списка всех запущенных демонов.

SLEDopit Модератор Сообщения: 4814 Статус: фанат консоли (= ОС: GNU/Debian, RHEL

Re: Получение списка всех запущенных демонов.

Сообщение SLEDopit » 04.10.2010 18:59

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

UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don’t do mistakes, the more bugs are in your code.

Читайте также:  Opening tar bz2 linux

Re: Получение списка всех запущенных демонов.

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

не спорю. но порядок их запуска устанавливается именно в rc*.d.

SLEDopit Модератор Сообщения: 4814 Статус: фанат консоли (= ОС: GNU/Debian, RHEL

Re: Получение списка всех запущенных демонов.

Сообщение SLEDopit » 06.10.2010 21:34

UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don’t do mistakes, the more bugs are in your code.

Re: Получение списка всех запущенных демонов.

Сообщение Shampe » 10.10.2010 17:45

Извиняюсь.что долго отвечал.
Т.е. для получения списка придется парсить все сценарии запуска в rc*.d и выковыривать оттуда названия демонов?

Re: Получение списка всех запущенных демонов.

Сообщение sgfault » 11.10.2010 00:11

Извиняюсь.что долго отвечал.
Т.е. для получения списка придется парсить все сценарии запуска в rc*.d и выковыривать оттуда названия демонов?

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

Re: Получение списка всех запущенных демонов.

Сообщение Shampe » 11.10.2010 00:31

find /var/run -name "*pid" | sed 's/.pid//;s_/var/run/__'

Спасибо Вам за совет.Про эту директорию знал,но не было уверенности.что в ней хранятся пиды всех демонов.
Вы уверенны,что там все демоны?

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

Re: Получение списка всех запущенных демонов.

Сообщение /dev/random » 11.10.2010 00:41

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

watashiwa_daredeska Бывший модератор Сообщения: 4038 Статус: Искусственный интеллект (pre-alpha) ОС: Debian GNU/Linux

Re: Получение списка всех запущенных демонов.

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

Ну почему же. Демон — фоновый процесс, непосредственный child init’а, отвязанный от tty. Итого, по определению:

Источник

Оцените статью
Adblock
detector