25.10.2023 17:20
Occul
 
Планировщик заданий cron

В случае, когда есть необходимость периодического запуска скриптов, полезно использовать планировщик cron, он позволяет задать расписание запуска скрипта и не требует присутствия администратора.

Просмотр заданий пользователя выполняется командой crontab –l. Для редактирования и создания новых задания используется команда crontab –e. Строки для запуска команд планировщика в файле конфигурации cron имеют следующий формат:

m h dom mon dow command parameters

Где m – минута, h – час, dom – день месяца, mon – месяц, dow – день недели, command – команда, parameters – список параметров.

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

Код:
10,30 * * * 1-5 command parameter1 parameter2
Более простой пример, каждые 15 минут выполнять команду:

Код:
*/15 * * * * command
Создадим скрипт для резервного копирования домашней директории пользователя, который будет создавать новый файл бэкапа при каждом запуске:

Код:
#!/bin/bash
USER=`whoami`
BACKUP_DIR=/tmp/backup_${USER}
BACKUP_FILE=${USER}_$(date +%Y%m%d%M%H%S).tgz

mkdir -p $BACKUP_DIR
cd /
tar -zcf $BACKUP_DIR/$BACKUP_FILE home/$USER
Поставим скрипт на выполнение каждый день в 22:00, выполнив команду crontab -e и добавив с помощью открывшегося редактора строку:

Код:
00 22 * * * ./backup_home.sh
Проверить, что задача добавлена в планировщик, можно командой crontab -l:

Код:
test:~$ crontab -l
00 22 * * * ./backup_home.sh
В результате каждый день в 22:00 будет создаваться резервная копия домашней директории пользователя (в приведенном примере для демонстрации запуск скрипта выполняется каждую минуту):

Код:
test:~$ cd /tmp/backup_test/
test:/tmp/backup_test$ ll
total 80
drwxrwxr-x  2 test test 4096 Feb 16 16:38 ./
drwxrwxrwt 17 root root 4096 Feb 16 16:30 ../
-rw-rw-r--  1 test test 4431 Feb 16 16:30 test_20210216301601.tgz
-rw-rw-r--  1 test test 4431 Feb 16 16:31 test_20210216311601.tgz
-rw-rw-r--  1 test test 4431 Feb 16 16:32 test_20210216321601.tgz
-rw-rw-r--  1 test test 4431 Feb 16 16:33 test_20210216331601.tgz
-rw-rw-r--  1 test test 4431 Feb 16 16:34 test_20210216341601.tgz
test:/tmp/backup_test$
Нужно отметить, что директория /tmp в примере использована исключительно для тестов, т.к. она предназначена для хранения временных файлов, и использовать её для хранения резервных копий нельзя. Правильное место размещения бэкапов может подсказать системный администратор.
28.10.2023 17:24
Капитан О.
 
Cron (крон) - это стандартный планировщик заданий в Unix-подобных операционных системах. Он позволяет запускать задания (скрипты или команды) автоматически по расписанию, без участия администратора.

Пользоваться cron можно следующим образом:

1. Откройте терминал и введите команду `crontab -e`. Это откроет файл crontab для редактирования.
2. В редакторе выберите режим вставки и добавьте строку с заданием в следующем формате:

Код:
* * * * * команда
Каждая звездочка (*), разделенная пробелом, представляет собой значения для определенного поля времени:

- Минуты (от 0 до 59)
- Часы (от 0 до 23)
- День месяца (от 1 до 31)
- Месяц (от 1 до 12)
- День недели (от 0 до 7, где 0 и 7 - это воскресенье)

Значение "*" означает любое значение.

3. После команды можете указать дополнительные параметры или пути к скриптам.
4. Сохраните файл и закройте редактор.

Примеры использования cron:

Код:
* * * * * command - запустить команду каждую минуту
30 6 * * * command - запустить команду в 6:30 каждый день
0 12 * * 1 command - запустить команду в 12:00 каждый понедельник
0 0 1 1 * command - запустить команду в полночь 1 января
Список всех заданий пользователя можно просмотреть с помощью команды `crontab -l`.

Также можно использовать специальные пользовательские файлы crontab, которые можно добавить в папку `/etc/cron.d`. Каждый файл должен иметь имя пользователя и идентификатор группы, например: `/etc/cron.d/user`.

У cron есть свои ограничения и особенности, поэтому при создании заданий рекомендуется обратиться к документации или к системному администратору.
Часовой пояс GMT +3, время: 00:03.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.