Посмотреть запущенные демоны linux

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Linux check internet speed

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

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

Источник

Демоны Linux и управление ими

Демоны обычно имеют конфигурационные файлы и выделяются тем. что могут запускаться и останавливаться пользователем вручную командами вида: service deamonname start / service deamonname stop / service deamonname restart

Чтобы найти конфигурационные файлы пакета можно использовать whereis:

Вывод команды примерно следующий:

apache2: /usr/sbin/apache2 /usr/lib/apache2 /etc/apache2 /usr/share/apache2 /usr/share/man/man8/apache2.8.gz

Также информацию о конфигурационных файлах часто можно найти в man программного пакета

В случае с самым распространенным веб-сервером — конфигурационные файлы находятся в /etc/apache2

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

В конфигах задается логирование — в случае если пакет работает неправильно — включить логирование или изменить его параметры.

Часто демоны работают от имени системных пользователей, специально для них создаваемых — так apache может работать от имени пользователя www-data или от имени пользователя apache.

Демоны Linux стартуют вместе с системой, родительским процессом для них является init

Запуск демона с использованием init синтаксиса:

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

В инициализационных скриптах указываются, в частности, runlevel-ы на которых демон стартует и останавливается.

Runlevels в Linux

0 Выключенное состояние (ядро не функционирует)
1 Режим использования одним пользователем (ядро функционирует, возможна авторизация, никакие сервисы не работают)
2 Режим, позволяющий работать нескольким пользователем и сети
3 Мультипользовательский режим с сетью
5 Мультипользовательский режим с сетью и GUI
6 Перезагрузка

В современном Linux init используется все реже поскольку данная система является устаревшей — она была создана довольно давно и плохо работает при необходимости обрабатывать данные поступающие в несколько потоков.

Замещается init системами upstart и systemd

upstart замещает все инициализационные скрипты конфигурационными файлами, они находятся в /etc/init

Управляются демоны, использующие upstart, следующим образом:

В 2014 году наметился переход от upstart к systemd. Многие дистрибутивы сейчас используют одновременно несколько систем инициализации.

Среди использующих systemd — Fedora:

Также используя systemd можно легко добавлять демоны в автозагрузку (демон будет стартовать при старте системы)

В init и upstart для того чтобы включить/выключить автозагрузку достаточно добавить/удалить инициализационный файл или скрипт из каталога /etc/init в init и /etc/init.d в upstart (или воспользоваться скриптом update-rc.d — update-rc.d defaults apache2 чтобы добавить сервис в автозагрузку и update-rc.d remove apache2 чтобы его удалить из автозагрузки).

Часто применяется также runit — удобная система, которая также позволяет управлять сервисами (sv s apache2 / sv t apache2 / sv d apache2).

На одной машине могут использоваться демоны, управляемые при помощи различных систем инициализации. Так на сервере часть ПО может запускаться посредством init скриптов, часть — под runit.

Читайте также:  Pes 2016 не запускается windows 10

Читайте про то, как добавить собственный скрипт, который будет выполняться после старта системы. Часто это бывает нужно чтобы добавить дополнительный функционал и свои скрипты.

Источник

Что такое демоны (daemons) в Linux?

Обновл. 20 Июл 2021 |

В этой статье мы рассмотрим, что такое демоны (и их примеры) в Linux, а также версии происхождения термина «daemon».

Что такое демоны?

Демоны (англ. «daemons») — это работающие в фоновом режиме служебные программы (или процессы), целью которых является мониторинг определенных подсистем ОС и обеспечение её нормальной работы. Например, демон принтера контролирует возможности печати, демон сети контролирует и поддерживает сетевые коммуникации и т.д.

Демоны являются аналогом служб (services) в Windows: они выполняют определенные действия в заранее определенное время или в ответ на определенные события. Существует множество различных демонов, работающих в Linux, каждый из которых создан специально для наблюдения за своей собственной маленькой частью системы. Из-за того, что демоны выполняют основную часть своей работы в фоновом режиме и не находятся под прямым контролем пользователя, бывает трудно определить предназначение того или иного демона.

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

Процесс — это запущенная программа. В определенный момент времени процесс может либо выполняться, либо ожидать, либо быть «зомби».

В Linux существует три типа процессов:

Процессы переднего плана (или «интерактивные процессы») — это те процессы, которые запускаются пользователем в терминале.

Фоновые процессы (или «автоматические процессы») — это объединенные в список процессы, не подключенные к терминалу; они не ожидают пользовательского ввода данных.

Демоны (англ. «daemons») — это особый тип фоновых процессов, которые запускаются при старте системы и продолжают работать в виде системных служб; они не умирают.

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

Когда завершается загрузка системы, процесс инициализации системы начинает создавать демоны с помощью метода fork(), устраняя необходимость в терминале (именно это подразумевается под «отсутствием управляющего терминала»).

Я не буду вдаваться в подробности работы метода fork(), отмечу лишь, что, хотя существуют и другие методы, традиционный способ создания дочернего процесса в Linux заключается в создании копии существующего процесса (посредством своеобразного «ответвления»), после чего выполняется системный вызов exec() для запуска другой программы.

Примечание: Термин «fork» не был взят с потолка. Он получил свое название от метода fork() из Стандартной библиотеки языка программирования Си. В языке Си данный метод предназначен для создания новых процессов.

Примеры демонов в Linux

Наиболее распространенный способ идентификации демона в Linux — это поиск процесса, имя которого заканчивается буквой d. Есть много способов увидеть работающих демонов. Их можно отследить в списках процессов через такие команды, как: ps , top , htop , а также pstree .

Читайте также:  Windows 10 enterprise ltsb 2016 x64 оригинальный образ

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

Вывод команды pstree — это довольно хорошая иллюстрация того, что происходит с нашей системой. Перед нами появился список всех запущенных процессов, среди которых можно заметить и несколько демонов: cupsd, dbus-daemon, kdekonnectd, packagekitd и некоторые другие.

Вот несколько «популярных» примеров демонов, которые могут работать в вашей системе:

systemd — это системный демон, который (подобно процессу init) является родителем (прямым или косвенным) всех других процессов, и имеет PID=1.

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

udisksd — обрабатывает такие операции, как: запрос, монтирование, размонтирование, форматирование или отсоединение устройств хранения данных (жесткие диски, USB-флеш-накопители и пр.).

logind — крошечный демон, который различными способами управляет входами пользователей в систему.

sshd — демон, отвечающий за управление службой SSH. Используется практически на любом сервере, который принимает SSH-соединения.

ftpd — управляет службой FTP. Протокол FTP (сокр. от англ. «File Transfer Protocol») является широко используемым протоколом для передачи файлов между компьютерами, где один компьютер действует как клиент, другой — как сервер.

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

Версии происхождения термина «daemon»

Есть несколько версий происхождения термина «daemon»:

Научная версия: Использование термина «daemon» в вычислительной технике произошло в 1963 году. Project MAC (сокр. от англ. «Project on Mathematics and Computation») — это проект по математике и вычислениям, созданный в Массачусетском технологическом институте. Именно здесь термин «daemon» вошел в обиход для обозначения любого системного процесса, отслеживающего другие задачи и выполняющего предопределенные действия в зависимости от их поведения. Процессы были названы термином «daemons» в честь демона Максвелла.

Примечание: Демон Максвелла — это результат мысленного эксперимента. В 1867 году Джеймс Клерк Максвелл представил себе разумное и изобретательное существо, способное наблюдать и направлять движение отдельных молекул в заданном направлении. Цель мысленного эксперимента состояла в том, чтобы показать возможность противоречия второму закону термодинамики.

Талисман BSD: В операционных системах BSD есть свой талисман — красный чертёнок (этакая игра слов «daemon/demon»). BSD-демона зовут Beastie (Бисти), и его часто можно увидеть с трезубцем, который символизирует системный вызов fork(), активно используемый программами-демонами.

Примечание: «Бисти» по звучанию напоминает BSD (произносится как «Би-Эс-Ди»). При этом beastie является уменьшительной формой от слова beast (зверь).

Теологическая версия: Сторонники данной версии считают, что первоначальной формой произношения слова «daemon» было «daimon», что обозначает (по одной из версий) ангела-хранителя. В то время как «daemon» — помощник, «demon» — злой персонаж из Библии.

Примечание: Также «daemon» иногда произносится как «day-mon» или как рифма к слову «diamond».

Аббревиатура: Некоторые пользователи утверждают, что термин «daemon» является аббревиатурой от «Disk and Execution Monitor».

Поделиться в социальных сетях:

Android – это Linux? Сравнение Android и Linux

Источник

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