cron - Это системный планировщик, классический демон в системе
UNIX используется для выполнения заданий в положенный момент времени,
инструкции поменяются в файл crontab и находится в специальных
каталогах.
При запуске, сервис открывает главный файл /etc/crontab в котором
планировщик запускает скрипты на запуск других cron файлов, именно
он запускает файлы из следующих директорий:
/etc/cron.d/- для управления всей системой/etc/cron.minutely- каждую минуту/etc/cron.hourly- каждый час/etc/cron.daily/- файлы выполняются в день/etc/cron.weekly/- в неделю/etc/cron.monthly/- в месяц
cron имеет специальный синтаксис для описания выполняемых заданий.
Переменные оболочки
Во-первых, в каждом файле переопределяются переменные оболочки,
SHELL - указывает путь к интерпретатору, PATH - переопределяет пути,
где оболочка будет искать файлы со скриптами для исполнения.
MAILTO - указывает почту куда отправить результат о выполнение
скрипта, помимо этого можно указать файл для вывода.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=qwerty@yandex.ru
Сам скрипт cron
С начала указывается время выполнения, далее пользователь от лица которого будет выполнена работа, и сам скрипт.
Minute Hour Day Month Day_of_the_Week User Script
17 * * * * root cd / && run-parts --report /etc/cron.hourly
Помимо системного cron, можно создавать cron задания для конкретного пользователя Linux, для этого можно использовать след команды.
Это покажет какие задания запущены для конкретного текущего пользователя:
crontab -l
Чтобы отредактировать эти команды след исп-ть команду:
crontab -e
Файл с cron командами будет назван по имени пользователя, и помещен в директорию:
# Если имя пользователя "serg"
/var/spool/cron/serg
Команды будут работать с файловой системой в директории пользователя.
К примеру такая команда будет выполняться каждую минуту, она запускает
при помощи интерпретатора python файл hello.py который будет находиться
в /home/serg/hello.py а результат вывода будет перенаправлен в
файл по пути /home/serg/a.txt
*/1 * * * * python hello.py >> a.txt
Роли и пользователи.
cat /etc/passwd
serg:x:1000:1000:serg,,,:/home/serg:/bin/bash
redis:x:122:127::/var/lib/redis:/usr/sbin/nologin
sshd:x:123:65534::/run/sshd:/usr/sbin/nologin
mysql:x:124:128:MySQL Server,,,:/nonexistent:/bin/false
postgres:x:125:129:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
Это модуль для создания запуска и изменения cron команд в Linux.
https://pythobyte.com/scheduling-jobs-with-python-crontab-dd7c1635/
pip3 install python-crontab