Как запускать по расписанию программы на Mac через crontab

Для начала нужно вспомнить, что в Mac как и в любой UNIX-системе доступна команда crontab. Поэтому вы можете очень легко настроить процесс автоматического открытия и закрытия программ.

Редактирование Crontab

Чтобы работать с crontab нужно открыть терминал и выполнить команду:

crontab -e

Данная команда откроет редактироване crontab-файла вашего пользователя в программе vi (vim, заметка о том как работать в vi).

Теперь вам нужно нажать на кнопку i, вы войдете в режим редактирования

Допустим, вам нужно каждое утро в пн, вт, ср, чт, пт в 09:01 утра открывать программу календарь, то для этого нужно вставить в файл следующее значение:

1 9 * * 1-5 open /System/Applications/Calendar.app

После вставки значение нажмите ESC, нажмите двоеточие (:) на клавиатуре, и введите wq для сохранения и закрытия файла

После закрытия файла вы увидите сообщение: crontab: installing new crontab

Пояснение по установке времени в файле

Выражение cron представляет собой строку из пяти полей, разделенных пробелами. Каждое поле представляет собой единицу времени:

1  9  * * 1-5 
│  │  │ │ └───── день недели (0 - 7, и 0, и 7 обозначают воскресенье)
│  │  │ └─────── месяц (1 - 12)
│  │  └───────── день месяца (1 - 31)
│  └──────────── час (0 - 23)
└─────────────── минута (0 - 59)

Звездочки (*) используются в качестве подстановочных знаков, означающих «любое значение». Можно также использовать значения, разделенные запятыми, диапазоны и приращения (с помощью символа /).

Вот отличный сервис, который поможет оперативно расшифровать время в crontab — crontab.guru

Редактирование Crontab с помощью визуального текстового редактора

Если вы предпочитаете использовать визуальные текстовые редакторы, такие как Visual Studio Code, Sublime Text или Atom, вы можете установить переменную окружения VISUAL, чтобы указать предпочтительный редактор. Например, чтобы использовать Visual Studio Code, выполните следующую команду в Терминале:

export VISUAL="subl --wait"

или

export VISUAL="code --wait"

Затем запустите crontab -e, и файл crontab откроется в Sublime или в Visual Studio Code. Внесите изменения и сохраните файл, затем закройте редактор, чтобы применить изменения.

Чтобы сделать это изменение постоянным, добавьте команду export VISUAL в конфигурационный файл вашей оболочки (например, ~/.bashrc, ~/.bash_profile или ~/.zshrc).

Мониторинг и протоколирование запланированных заданий с помощью Crontab

Чтобы эффективно управлять запланированными заданиями, важно знать, как проверить, какие задания запланированы в данный момент, и как просмотреть журналы прошлых запусков.

Проверка запланированных заданий

Просмотреть текущий список запланированных заданий, откройте терминал и введите следующую команду:

crontab -l

Эта команда отобразит ваш текущий файл crontab, показывая все запланированные задания cron. Каждая строка представляет собой одно задание cron, состоящее из выражения cron, за которым следует команда для выполнения.

Просмотр журналов прошлых запусков

По умолчанию macOS не хранит подробные журналы заданий cron. Однако можно перенаправить вывод заданий cron в файлы журнала, чтобы отслеживать их выполнение. Для этого измените файл crontab, добавив перенаправление вывода для каждого задания cron.

Например, чтобы записать в журнал вывод сценария оболочки, выполняемого ежедневно в 3 часа утра, обновите запись в crontab следующим образом:

0 3 * * * /path/to/backup.sh >> /path/to/backup.log 2>&1

Оператор >> добавляет вывод в указанный файл журнала, а 2>&1 обеспечивает захват как стандартного вывода (stdout), так и стандартной ошибки (stderr).

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

Также можно проверить системный журнал для получения основной информации о выполнении заданий cron. Для этого откройте Терминал и введите следующую команду:

grep -i cron /var/log/system.log

Эта команда отобразит все записи журнала, связанные с заданиями cron, предоставив вам временные метки и основную информацию о выполнении запланированных задач.

Источник