Skip to content

Latest commit

 

History

History
95 lines (65 loc) · 4.27 KB

File metadata and controls

95 lines (65 loc) · 4.27 KB

Планировщик crone и модуль crontab


cron - Это системный планировщик, классический демон в системе UNIX используется для выполнения заданий в положенный момент времени, инструкции поменяются в файл crontab и находится в специальных каталогах.

При запуске, сервис открывает главный файл /etc/crontab в котором планировщик запускает скрипты на запуск других cron файлов, именно он запускает файлы из следующих директорий:

  1. /etc/cron.d/ - для управления всей системой
  2. /etc/cron.minutely - каждую минуту
  3. /etc/cron.hourly - каждый час
  4. /etc/cron.daily/ - файлы выполняются в день
  5. /etc/cron.weekly/ - в неделю
  6. /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, можно создавать 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

Модуль питона crontab для создания cron команд

Это модуль для создания запуска и изменения cron команд в Linux.

https://pythobyte.com/scheduling-jobs-with-python-crontab-dd7c1635/

pip3 install python-crontab