Перейти к основному содержимому

Cron в MAC OS X

Примечание: здесь описывается настройка cron в Moodle с использованием системы launchd в OSX. Однако, поскольку OSX является вариантом Unix, cron также является возможным вариантом. Следует отметить, что cron в OSX фактически управляется launchd.

Следующая информация была первоначально опубликована Ральфом Краузе в Пошаговая установка на Mac OS X Server.

launchd

В Mac OS X 10.5+ вы найдёте системный демон launchd для этой службы. Этот демон предлагает стандартизированный интерфейс любому пользователю и всем программам, запускаемым системой автоматически. Пожалуйста, ознакомьтесь с http://developer.apple.com/macosx/launchd.html для получения дополнительной информации о настройках и всех параметрах.

Служба должна получать веб-страницу http://path.to.your/moodle/admin/cron.php каждые несколько минут. Настройка будет выполнена с помощью файла с именем moodle4mac.cron.plist, который должен быть помещён в системную папку /Library/LaunchDaemons/ ... конечно, вы можете использовать любое другое имя файла, но оно должно что-то говорить о функции службы. Расширение должно быть .plist. После любой перезагрузки вашего Mac-сервера служба cron запустится автоматически, потому что файл помещён в правильную системную папку.

Примечание: проверьте Настройки cron, чтобы убедиться, что запуск веб-версии cron в Moodle разрешён.

Используйте графический способ

Вы можете использовать Lingon (к сожалению, больше не поддерживается) для добавления нового списка демонов или его редактирования. Он создаёт тот же текст, который вы можете написать в своём текстовом редакторе. http://sourceforge.net/projects/lingon/files/

Снимок экрана Lingon

Используйте текстовый редактор

Пожалуйста, используйте текстовый редактор для написания необходимого файла. Вы можете открыть Терминал и использовать системные редакторы vi или pico. Но вы также можете написать текстовый файл с помощью любого графического текстового редактора... Я чаще всего использую TextWrangler... но НЕ берите редактор для форматированных текстов, таких как Microsoft Word или OpenOffice Writer. Вам нужен чистый текст!

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key><false/>
<key>Label</key><string>moodle4mac.cron</string>
<key>ProgramArguments</key>
<array>

curl <string>-s</string>
http://your-server-address/moodle19/admin/cron.php RunAtLoad StartInterval300 StandardErrorPath/dev/null StandardOutPath/dev/null `

Строка метки должна быть такой же, как и имя файла, но без расширения .plist. Сохраните текстовый файл /Library/LaunchDaemons/moodle4mac.cron.plist. Владелец файла должен быть установлен для системного пользователя root со следующим:

sudo chown root /Library/LaunchDaemons/moodle4mac.cron.plist

Если вы используете сайт с SSL (т. е. у него есть протокол https://), вам необходимо либо перечислить свои сертификаты SSL для использования утилитой CURL (см. эти документы для получения более подробной информации), либо вы должны использовать переключатель '-k' в дополнение к переключателю '-s', использованному выше; ваша строка аргументов будет выглядеть так: `-s -k`.

Это всё, на самом деле!

Как запустить и остановить службу cron

Вы можете запустить новую службу cron в Терминале.

sudo launchctl load /Library/LaunchDaemons/moodle4mac.cron.plist

Следующая команда остановит службу. Если вы хотите активировать изменения в службе cron, вам нужно разгрузить, а затем снова загрузить демон.

sudo launchctl unload /Library/LaunchDaemons/moodle4mac.cron.plist

Только одна служба для двух серверов?

Для моего сервера мне нужна была служба cron для двух экземпляров moodle19 и moodle20... нет проблем... с опечаткой moodle[19-20] я получу службу cron для обоих.

curl -s http://your-server-address/moodle[19-20]/admin/cron.php

Чтобы убедиться, что служба cron работает правильно, вы должны посмотреть в access.log вашего веб-сервера. cron.php должен быть доступен каждые 5 минут... на моём сервере для обоих экземпляров Moodle moodle19 и moodle20... о да, это работает!!

192.168.0.220 - - [30/Jul/2009:22:10:56 +0200] "GET /moodle19/admin/cron.php HTTP/1.1" 200 1136
192.168.0.220 - - [30/Jul/2009:22:10:57 +0200] "GET /moodle20/admin/cron.php HTTP/1.1" 200 1403
192.168.0.220 - - [30/Jul/2009:22:11:18 +0200] "OPTIONS * HTTP/1.0" 200 -
192.168.0.220 - - [30/Jul/2009:22:15:56 +0200] "GET /moodle19/admin/cron.php HTTP/1.1" 200 735
192.168.0.220 - - [30/Jul/2009:22:15:57 +0200] "GET /moodle20/admin/cron.php HTTP/1.1" 200 964
192.168.0.220 - - [30/Jul/2009:22:20:56 +0200] "GET /moodle19/admin/cron.php HTTP/1.1" 200 1136
192.168.0.220 - - [30/Jul/2009:22:20:57 +0200] "GET /moodle20/admin/cron.php HTTP/1.1" 200 1365