понедельник, 31 октября 2022 г.

Внесение в cron нескольких заданий через bash

Возникла необходимость внесения двух заданий в в cron. Например, одно задание должно выполняться ежедневно каждую 1 минуту часа с 18 до 21 часов, а второе задание также должно выполняться ежедневно, но в 21 час. 5 минут.

Если компьютер свой, то назначить эти задания можно через команду терминала crontab -e (см. пользовательское задание cron):

01 18-21 * * * /home/minter/.config/scripts/cron1.sh

05 21 * * * /home/minter/.config/scripts/cron2.sh

Но если компьютер не свой (вы кому-то помогаете дистанционно) или каждый раз просто лень постоянно вносить изменения в сron через  crontab -e ?

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

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

🔰   Примечание. Приём заимствован из арсенала администраторов Linux, но с успехом работает и в системе только с одним пользователем. 

Пример:

#!/bin/bash
crontab -r
crontab -u minter /home/minter/Shared/cronjob
exit

-u minter  указывает на то, что новый cron будет назначен для пользователя системы с логином minter. Если пользователь имеет логин user, то будет -u user

/home/minter/Shared/cronjob  указывает полный путь к файлу cronjob

Сохраните данный скрипт как исполняемый файл sh, например newcron.sh 

Файл cronjob (или любое другое имя) представляет из себя обычный текстовый файл. Пример:

#
01 18-21 * * * /home/minter/.config/scripts/cron1.sh
05 21 * * * /home/minter/.config/scripts/cron2.sh

Обратите внимание, что в данном текстовом файле нет необходимости делать перевод каретки на новую строку, как это предписано при редактировании через crontab -e

Попробуйте выполнить созданный скрипт.  Откройте на редактирование cron (crontab -e) и убедитесь, что синтакис cron соблюдён, то есть пустая строка в конце присутствует.

Комментариев нет:

Отправить комментарий