Запуск shell-скрипта в определенное время
Чтобы запланировать запуск shell-скрипта на определенное время, используйте команду launchd
или cron
.
Выполнение задач по расписанию с помощью launchd
Для выполнения задач по расписанию используйте
launchd
, а неcron
. При использованииlaunchd
, если задача пропущена, потому что компьютер выключен или находится в режиме сна, она добавляется в очередь и будет выполнена, когда компьютер снова вернется в рабочий режим.Чтобы использовать
launchd
для планирования задач на основе таймера, используйте ключStartCalendarInterval
илиStartInterval
.Подробную информацию об использовании инструмента
launchd
см. на его man-странице.
Использование cron для выполнения задачи по расписанию
Демон cron
выполняет запланированные команды, заданные в файлах crontab. Демон cron
просматривает папку /usr/lib/cron/tabs/ в поисках файлов crontab, имена которых соответствуют учетным записям в /etc/passwd, и загружает эти файлы в память. Демон cron
также просматривает папку /etc/crontab/ в поисках файлов crontab, которые имеют другой формат. Затем cron
раз в минуту просматривает сохраненные файлы crontab, проверяет каждую команду и определяет, не нужно ли ее выполнить в данную минуту.
После выполнения команд их результаты отправляются владельцу файла crontab или пользователю, имя которого указано с помощью необязательной переменной среды MAILTO в файле crontab.
Для установки, удаления или получения списка таблиц, используемых для управления демоном cron
, используется инструмент crontab
. Пользователи могут создать свой собственный файл crontab.
Для настройки файла crontab используйте команду
crontab -e
. Она открывает пустой файл crontab в режиме редактирования.Ниже приведен пример файла crontab:
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#min hour mday month wday command
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
50 23 * * 0 diskutil repairVolume /Volumes/MacHD
В этом примере первая запись восстанавливает права доступа к диску для тома MacHD в 18:30 каждый день с понедельника по пятницу:
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
Вторая запись планирует операцию восстановления тома на 23:50 по воскресеньям:
50 23 * * 0 diskutil repairVolume /Volumes/MacHD