У меня довольно простая работа, которую я хотел бы выполнять каждый час. Я мог бы сделать это, используя cron
, но я думал, что буду использовать это, чтобы узнать об этом launchd
, так как я слышу хорошие вещи об этом. У меня есть man launchd.plist
страница в качестве ссылки, но я ищу что-то более основанное на создании примера работы.
19
cron
вопрос, разве superuser.com не был бы правильным местом? Такlaunchd
как это версия Applecron
(а такжеdaemontools
и, возможно, другие вещи), я подумал, что это мой лучший вариант.Ответы:
launchd
запускает Daemons (/Library/LaunchDaemons
или/System/Library/LaunchDaemons
) от имени пользователя root и запускает их независимо от того, вошли пользователи или нет. Агенты запуска (/Library/LaunchAgents/
или~/Library/LaunchAgents/
) запускаются, когда пользователь вошел в систему как этот пользователь. Вы не можете использовать setuid для смены пользователя, запускающего скрипт на демонах./System
Каталог зарезервирован для Mac OS X задач , поэтому я рекомендую положить вашlaunchd
plists в либо/Library
или~/Library
папку , как это имеет смысл.Итак, первый шаг - определить, делаете ли вы агент или демон.
Второй шаг - создать
.plist
файл. Вы можете использовать программы на основе графического интерфейса, такие как Lingon, чтобы помочь с этим или просто использовать ваш любимый текстовый редактор:Пример
.plist
для запуска скрипта каждый час (StartInterval
илиStartIntervalCalendar
это ключи, которые мы хотим -StartInterval
чтобы элемент происходил каждыеx
секунды,StartIntervalCalendar
в течение определенного времени и / или даты. См. 126907 для SuperUser для примера, который я сделал с StartCalendarInterval):Измените,
.plist
если необходимо, указать свой сценарий и все необходимые аргументы (аргументы указаны в отдельных строках) и сохраните файл с тем же именем, что и значение Label, но.plist
в конце с. (например,local.my-mac.flickrstats
будет сохранен какlocal.my-mac.flickrstats.plist
). Если вы еще этого не сделали, переместите этот.plist
файл во/Library/LaunchDaemons
время создания демона (выполняется постоянно) или в~/Library/LaunchAgents
(только если вы вошли в систему) или/Library/LaunchAgents
(любой пользователь вошел в систему).Для запуска задания, которое вы хотите запустить,
launchctl
необходимо загрузить файл. Для элементов в/Library
, вы должны использовать sudo: например,sudo launchctl load -w /PATH/TO/PLIST
Для справки также ознакомьтесь со следующими вопросами о суперпользователе : команда Launchd от имени пользователя root , загрузка системного демона и как заставить скрипт запускаться каждый день
источник
Я знаю, что это не очень хороший учебник, но вы можете взглянуть на Руководство по программированию Daemons and Services от Apple, в котором есть раздел «Планирование временных заданий».
Я знаю, что это не полный учебник, но с его помощью вы можете понять основы
launchd
.Также приведен пример
crond
задачи:источник
Это мне очень помогло: http://launchd.info
Он охватывает настройку, администрирование и устранение неполадок с использованием терминала или запуска LaunchControl с графическим интерфейсом . Примеры предоставляются также.
источник
Я знаю, что вы искали учебник, но по случайности кто-то приходит сюда в поисках инструмента, помогающего им создавать / редактировать записи запуска, я использовал его раньше: Lingon (sourceforge)
Это больше не активно развивается, но то, что там работает, (и, конечно, включает в себя источник и т. Д.) Я использовал его на Snow Leopard для планирования резервного копирования в облако Amazon и т. Д.
источник