Что такое tar
tar — это утилита командной строки в операционной системе Linux, которая используется для архивации файлов и директорий в один файл. «tar» происходит от «Tape ARchive» (ленточный архив), потому что изначально она использовалась для архивации данных на магнитных лентах.
-z (gzip).
Основные ключи и функционал tar
| Ключ | Пояснение | Пример |
|---|---|---|
-c |
Создание нового архива | tar -cf archive.tar file1.txt file2.txt |
-x |
Извлечение файлов из архива | tar -xf archive.tar |
-r |
Добавление файлов в существующий архив | tar -rf archive.tar file3.txt directory2 |
-t |
Просмотр содержимого архива | tar -tf archive.tar |
-z |
Сжатие данных с помощью gzip | tar -czf archive.tar.gz directory |
-v |
Подробный вывод (verbose) | tar -cvf archive.tar directory |
-f |
Определение имени архива | tar -cf archive.tar directory |
Что такое cron
Cron — это стандартный планировщик задач в Unix и Unix-подобных операционных системах, таких как Linux. Cron появился в Unix в конце 1970-х годов и с тех пор стал одним из стандартных компонентов многих Unix-подобных систем.
Три компонента cron
Cron tables (таблицы cron)
Файлы конфигурации, которые содержат информацию о том, какие задачи должны быть выполнены и когда. Обычно используются два основных файла:
/etc/crontab— системные задачи/var/spool/cron— таблицы cron для каждого пользователя
Cron jobs (задания cron)
Сами задачи, которые нужно автоматизировать. Каждый cron job состоит из команды или скрипта, который должен быть выполнен, и расписания, которое определяет, когда задача должна быть выполнена.
Cron daemon (демон cron)
Процесс, который работает на фоне и регулярно проверяет cron-таблицы для запуска задач в соответствии с определённым расписанием.
Crontab: расписание cron
Каждая запись в файле crontab содержит пять полей, разделённых пробелами или табуляцией:
# минуты часы день_месяца месяц день_недели команда
# (0-59) (0-23) (1-31) (1-12) (0-7)
*/15 * * * * /tmp/script.sh
Значения и спецсимволы
| Символ | Пояснение | Пример |
|---|---|---|
* |
Любое значение | * в поле минут = каждую минуту |
1,2,5 |
Список значений | 1,2,5 в часах = в 1:00, 2:00 и 5:00 |
*/n |
Шаг (каждые n единиц) | */15 в минутах = каждые 15 минут |
n-m |
Диапазон значений | 1-5 в часах = с 1:00 до 5:59 |
Примеры расписаний (из лекции)
0 2 * * * # в 2:00 каждый день
30 8 * * 1-5 # в 8:30 с понедельника по пятницу
*/15 * * * * # каждые 15 минут
0 0 1 * * # в полночь первого числа каждого месяца
01 * * * * # в 01 минуту каждого часа
Crontab: управление заданиями
Поддерживаемые ключи команды crontab:
| Ключ | Пояснение |
|---|---|
-e |
Редактирование текущих cron-заданий (открывает файл в текстовом редакторе) |
-l |
Вывод текущих cron-заданий |
-r |
Удаление ВСЕХ текущих cron-заданий (без подтверждения!) |
-u user |
Операция от имени другого пользователя |
Практика из лекции: создание задания
Создадим два файла: один — скрипт, второй — лог с результатами:
# Создаём файлы скрипта и лога
touch /tmp/script2.sh /tmp/output2.log
# Записываем содержимое скрипта (флаг -e интерпретирует \n как перенос строки)
echo -e '#!/bin/bash\n date\n echo "it works"' > /tmp/script2.sh
# Делаем скрипт исполняемым
chmod +x /tmp/script2.sh
# Открываем редактор crontab
crontab -e
Добавляем в crontab (запуск каждую минуту):
* * * * * /tmp/script2.sh >> /tmp/output2.log
Проверить наличие задания:
crontab -l
# Следить за выводом в реальном времени:
tail -f /tmp/output2.log
crontab -e по умолчанию открывает редактор vi, что может быть неудобно для начинающих. Перед запуском можно задать предпочтительный редактор:
export EDITOR=nano
crontab -e
Это задаёт nano как редактор только для текущей сессии. Для постоянного эффекта добавьте строку в ~/.bashrc.