Планировщик заданий 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 в примере использована исключительно для тестов, т.к. она предназначена для хранения временных файлов, и использовать её для хранения резервных копий нельзя. Правильное место размещения бэкапов может подсказать системный администратор.