daemontools Дэна Бернштейна был разработан для сделали это и создали целое семейство наборов инструментов, которые используют одни и те же необработанные механизмы:
Практически под любой из них можно написать программу run
, которая запускает / является демоном, и диспетчер служб или процесс супервизора просто контролирует его как разветвленный дочерний процесс, используя обычные механизмы Unix и Linux. Это может быть сделано либо в масштабе всей системы с помощью специального диспетчера служб, запущенного от имени суперпользователя, либо для каждого пользователя с отдельными диспетчерами служб.
Все эти наборы инструментов согласованы и самосогласованы, но обратите внимание, что ни один из них не требует использования каких-либо инструментов, кроме тех, которые необходимы в той или иной конкретной ситуации. Можно также смешивать и сочетать. Можно использовать execlineb
Лорана Беркота и все его утилиты под perp или мой nosh
интерпретатор скриптов и все его утилиты под runit; точно так же, как можно использовать chpst
Геррита Пейпа под моим сервис-менеджером
.
Точно так же вы можете использовать общесистемную или индивидуальную службу, запускаемую из systemd. Модульные файлы systemd имеют тот же порядок простоты, что и сценарии run
, хотя, будучи необязательными, они не обеспечивают точного точного контроля над тем, как устанавливается состояние выполнения процесса службы. Конечно, это 2017 год, и применяется первое правило перехода на systemd .
Все они обеспечивают базовую основу для запуска демона при начальной загрузке, его остановки и запуска под административным / автоматическим управлением во время работы системы и автоматического перезапуска в различных случаях сбоя.
Элемент в скобках (который в некоторых системах может быть комбинацией букв и цифр, но чаще всего представляет собой всего одну цифру) относится к в руководстве . «Руководство» - это совокупный объем имеющихся руководств.
В моей системе OpenBSD эти разделы находятся в руководстве man (1)
(также называемом «руководством для команды man
»):
1 General commands (tools and utilities).
2 System calls and error numbers.
3 Library functions.
3p perl(1) programmer's reference guide.
4 Device drivers.
5 File formats.
6 Games.
7 Miscellaneous information.
8 System maintenance and operation commands.
9 Kernel internals.
Номера разделов в основном одинаковы в разных системах, но могут быть небольшие отклонения. Разделы не стандартизированы, по крайней мере, POSIX, поэтому я думаю, что они в основном традиционные.
В некоторых случаях вам нужно будет знать, какой раздел вы ищете. Так обстоит дело, например, с руководством printf
. printf (1)
относится к утилите printf
оболочки, а printf (3)
описывает подпрограмму библиотеки C printf ()
. Если вы просто наберете man printf
, вы, скорее всего, получите printf (1)
. Чтобы получить руководство для функции библиотеки C, используйте man 3 printf
.
Похоже, что разделы были введены с Третьим изданием UNIX, вышедшим из Bell Labs в 1971 году (первая UNIX, написанная на C, а не на языке ассемблера).
Руководство третьего издания UNIX содержало следующие разделы :
I. Commands
II. System calls
III. Subroutines
IV. Special files
V. File formats
VI. User-maintained programs
VII. Miscellaneous
VIII. Maintenance
Цифры указывают, из какого раздела руководства берется информация (изначально, какой физический том из набора руководств, который у вас был на полке).
Из man man
:
The table below shows the section numbers of the manual followed by the types of
pages they contain.
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions), e.g. man(7),
groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]
Некоторые дополнительные «разделы» были добавлены позже. Например, (15:00)
в приведенном выше цитируемом тексте относится к модулю (или библиотеке) perl.
Число после команды говорит вам, в каком разделе справочных страниц находится документация по этой команде ... например, grep (1) означает страницу руководства для grep можно найти в разделе 1 страниц руководства.
Различные разновидности UNIX и разные дистрибутивы Linux имеют разные соглашения относительно того, в какой раздел входит документация по командам.
извлечение из man
(5 абзац):
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]