Я только что узнал, что cron
устарела в Mac OS X. Почему это так и будет ли оно в конечном итоге полностью удалено из будущих выпусков?
С выпуском Mac OS 10.4, launchd
был выбран, чтобы заменить cron
в Mac OS. Вот кэшированная версия страницы запуска от Apple Developer Connection в 2005 году. Это объясняет, почему cron
устарела, а также преимущества launchd
с точки зрения Apple.
Резюме: launchd
был создан, чтобы не просто заменить cron
но также init
, xinetd
для повышения производительности и лучшего контроля над конфигурацией и самими задачами.
launchd
daemon предлагает единый стандартизированный интерфейс для всех программ, автоматически запускаемых системой. Кроме того, файлы конфигурации, которые определяют, когда запускать данную программу, также могут указывать ограничения ресурсов и переменные среды, что упрощает настройку и безопасность для многих программ. Один и тот же формат файла конфигурации используется независимо от того, запускается ли задание один раз при запуске системы или при входе пользователя в систему, по запросу по сети или через определенные промежутки времени.
Статья в Википедии о запуск программ имеет очень хорошее резюме, расширенные обсуждения, а также несколько отличных видео и внешних ссылок для более глубокого погружения в это решение Apple.
В двух словах, launchd
заменяет 7 основных задач и множество сценариев ( Inetd , в этом а также гс и связанные структуры сценариев оболочки, crond , фактическое время убытия , watchdogd , SystemStarter ) с одним гораздо более мощным инструментом с открытым исходным кодом.
Зачем:
Когда: 29 апреля 2005 года (когда OS X Tiger был выпущен для продажи)
Ничто не мешает нам всем использовать launchd для запуска cron сейчас на Tiger, Leopard или Snow Leopard.
Если будущее Apple прекратит доставку /usr/sbin/cron
это наверняка закончится как Wget и другие зрелые инструменты с открытым исходным кодом, которые компилируются и должны быть добавлены как отдельный инструмент командной строки.
Я даже не знаю, был ли cron устарел. man crontab
кажется, указывает, что это не имеет:
(Примечание Дарвина: хотя cron (8) и crontab (5) официально поддерживаются в Darwin, их функциональность была включена в launchd (8), который обеспечивает более гибкий способ автоматического выполнения команд. Для получения дополнительной информации см. Launchctl (1)). .)
Руководство по программированию демонов и сервисов говорит, что это устарело, хотя:
Примечание: хотя это все еще поддерживается, cron не является рекомендуемым решением. Это устарело в пользу launchd.
crontab также требуется POSIX и OS X должен быть совместимым с SUS.
В любом случае, cron, вероятно, не перестанет работать в ближайшее время, и я не знаю, можно ли сказать, что он медленнее или менее безопасен, чем запущенный. Процесс cron должен почти не использовать процессорное время или память. Некоторые преимущества использования или изучения cron заключаются в том, что он также доступен на других платформах, а формат конфигурации проще.