Як запускати за розкладом програми на 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, надавши вам тимчасові мітки та основну інформацію про виконання запланованих завдань.

Джерело