launchd


launchd — система инициализации в macOS с открытым исходным кодом, созданная для замены SysVinit и SystemStarter. Процесс launchd имеет PID 1 и занимается тем, что запускает другие процессы и перезапускает их в случае сбоя, то есть выполняет функции init (в новых версиях Linux systemd). Также он заменяет cron. Процессы, запускаемые после запуска системы до входа в систему, записываются в каталог /Library/LaunchDaemons. Процессы, запускаемые после входа в систему — в каталоге /Library/LaunchAgents. В этих каталогах создаются файлы с xml-содержимым, которые управляют запуском процессов. Были попытки портировать launchd для FreeBSD и производных систем.

launchd — управляет демонами как на уровне системы, так и на уровне пользователя. Как и xinetd, launchd может запускать демоны по требованию. Как и watchdogd, launchd может отслеживать демонов, чтобы убедиться, что они продолжают работать.

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

У launchd есть две основные задачи. Первый — это загрузить систему, а второй — загрузка и обслуживание сервисов. Вот упрощенный вид запуска системы Mac OS X Tiger на PowerPC.