Миграция с Cron на Launchd под Mac OS

Не так давно обратил внимание, на странные записи в лог файле Mac OS X (var/log/system). В них сервис crond ругался то на segmentation fault, то еще на что-то:

Could not setup Mach task special port 9: (os/kern) no access

Товарищи на форумах в один голос советовали переходить с cron на встроенный в макинтош механизм launchd. Приведу простой пример, как это можно быстро сделать. Допустим у вас в cron есть запись:

*/5 * * * * /usr/bin/some_program param1 param2

Данная команда будет выполняться каждые 5 минут, каждый день. Теперь удаляем ее и создаем файл с произвольным, но не лишенным смысла названием и расширением plist в каталоге /Library/LaunchAgents с содержанием вида:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>some.random.label.here</string>
        <key>UserName</key>
        <string>whitehill</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/bin/some_program</string>
                <string>param1</string>
                <string>param2</string>
        </array>
        <key>StartInterval</key>
        <integer>300</integer>
</dict>
</plist>

После этого, запись необходимо активировать выполнив

launchctl load /Library/LaunchAgents/[имя.вашего.файла].plist

Статус выполнения нового "агента" можно отследить в файле /var/log/system