Я написал для "старого" 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/
(извините за грубое форматирование, пишу с мобильного...)