Обычно пакет будет содержать двоичные файлы, библиотеки и другие ресурсы, так, чтобы программы, связанные против тех библиотек, могли работать.
Но когда необходимо создать пакет, заголовочные файлы обычно требуются, в этом случае, Вы устанавливаете theose-devel пакеты для предоставления желаемого заголовочного файла.
Попытайтесь узнать больше о механизме сборки C/C++, чтобы помочь Вам понять это лучше.
Понятие демона прикреплено к процессам , а не к файлам . По этой причине нет смысла "находить демонов в файловой системе". Просто чтобы немного прояснить это понятие: программа - это исполняемый файл (видимый в выводе ls
); процесс - это экземпляр этой программы (видимый в выводе ps
).
Теперь, если мы воспользуемся информацией, которую я дал в моем ответе , мы сможем найти выполняющиеся демоны с помощью , ища процессы, которые работают без прикрепленного к ним управляющего терминала . Это можно довольно легко сделать с помощью ps
:
$ ps -eo 'tty,pid,comm' | grep ^?
Поле вывода tty
содержит "?", когда процесс не имеет управляющего терминала.
Большая проблема возникает, когда ваша система работает в графическом окружении. Так как GUI-программы (т.е. Chromium) не прикреплены к терминалу, они также появляются на выходе. В стандартной системе, где корень не запускает графических программ, вы можете просто ограничить предыдущий список процессами корня. Этого можно добиться с помощью переключателя ps
' -U
.
$ ps -U0 -o 'tty,pid,comm' | grep ^?
Тем не менее, здесь возникают две проблемы:
В основном, мы хотели бы отобразить все программы без управляющего терминала, но не программы с графическим интерфейсом. К счастью для нас, есть программа, которая перечисляет графические процессы : xlsclients
! Этот ответ из slm рассказывает нам, как использовать его для перечисления всех программ с графическим интерфейсом, но нам придется его перевернуть, так как мы хотим исключить их. Это можно сделать с помощью переключателя -удалить
.
Сначала мы построим список всех программ с графическим интерфейсом, для которых у нас есть запущенные процессы. Из ответа, который я только что связал, это делается с помощью...
$ xlsclients | cut -d' ' -f3 | paste - -s -d ','
Теперь, ps
имеет переключатель -C
, который позволяет нам выбирать по имени команды. Мы только что получили список команд, поэтому введём его в командную строку ps
. Обратите внимание, что я использую -отменить выбор
после этого, чтобы отменить выбор.
$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --deselect
Теперь у нас есть список всех не-GUI процессов. Давайте не будем забывать о нашем правиле "нет 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 ^?
Я написал для "старого" sysv initd, вы должны проверить, работает ли он на вашем дистрибутиве.
У хороших демонов есть хорошо написанные скрипты запуска в /etc/initd
При изменении уровня запуска, как init узнает о запущенных демонах?
Ищет их имена в каталоге
/var/lock/subsys
Так что можно
get the names list from there
scan all the running processes and check if the name is inside the list: bingo !
Чтобы просканировать все процессы, :перечислите все подкаталоги в
/proc
Если его имя — цифры, это pid запущенного процесса.
Например, статус процесса с pid 1234 — это файл
/proc/1234/status
Откройте его и получите первую строку, начинающуюся с "Имя :"
См.
http://man7.org/linux/man-pages/man5/proc.5.html
https://linuxexplore.com/2014/03/19/use-of-subsystem-lock-files-in-init-script/
(извините за грубое форматирование, пишу с мобильного...)