💻 Примеры — cron, crontab и tar

К оглавлению урока

⚡ Самые нужные команды

tar -czf archive.tar.gz directory/    # упаковать с сжатием
tar -xzf archive.tar.gz              # распаковать
tar -tf archive.tar                   # посмотреть без распаковки
crontab -e                            # открыть редактор заданий
crontab -l                            # показать задания
*/15 * * * * /path/script.sh          # запуск каждые 15 мин

Примеры работы с tar

Создание архива (без сжатия)

tar -cf archive.tar file1.txt file2.txt

Эта команда создаст архив archive.tar, который будет содержать файлы file1.txt и file2.txt.

  • -c — создать новый архив
  • -f — определяет имя архива

Создание архива со сжатием gzip

tar -czf archive.tar.gz directory1

Эта команда создаст архив archive.tar.gz, который будет содержать содержимое директории directory1, со сжатием при помощи gzip.

  • -c — создаёт новый архив
  • -z — для архивации с gzip-сжатием
  • -f — определяет имя архива

Извлечение архива

# Распаковать в текущую директорию
tar -xzf archive.tar.gz

# Распаковать в конкретное место
tar -xzf archive.tar.gz -C /tmp/extracted/

Просмотр содержимого архива

tar -tf archive.tar

Показывает список файлов в архиве без его распаковки.

Создание с подробным выводом (verbose)

tar -czvf archive.tar.gz /home/MyDir/*

Флаг -v выводит имя каждого добавляемого файла — удобно для контроля.

Практика: создание cron-задания из лекции

Шаг 1. Создать файлы скрипта и лога

touch /tmp/script2.sh /tmp/output2.log

Шаг 2. Записать содержимое скрипта

Флаг -e в команде echo сообщает оболочке интерпретировать последовательности \n как символ новой строки:

echo -e '#!/bin/bash\n date\n echo "it works"' > /tmp/script2.sh

Шаг 3. Сделать скрипт исполняемым

chmod +x /tmp/script2.sh

Шаг 4. Открыть редактор crontab и добавить задание

crontab -e

В открывшемся редакторе добавить строку (запуск каждую минуту):

* * * * * /tmp/script2.sh >> /tmp/output2.log

Выйти с сохранением (в vi: Esc, затем :wq; в nano: Ctrl+X, Y).

Шаг 5. Проверить наличие задания

crontab -l

Вывод:

* * * * * /tmp/script2.sh >> /tmp/output2.log

Шаг 6. Следить за выполнением в реальном времени

tail -f /tmp/output2.log

При помощи tail -f можно отслеживать «хвост» файла лога и следить за тем, как каждую минуту скрипт выполняется и в файле появляется новая строка.

Полный пример: скрипт + crontab каждые 15 минут

Создадим простой скрипт, создающий файл с датой:

# /tmp/task_script.sh

#!/bin/bash
DATE=$(date +"%d.%m.%y")
touch /tmp/task_${DATE}.txt
echo "Created: /tmp/task_${DATE}.txt"

Запускаем каждые 15 минут через crontab:

chmod +x /tmp/task_script.sh
crontab -e
# Добавить строку:
*/15 * * * * /tmp/task_script.sh >> /tmp/task_script.log 2>&1
⚠️ ВНИМАНИЕ: rm -r $temp_dir
Будьте осторожны при использовании rm -r $temp_dir в скриптах. Если переменная $temp_dir пустая или содержит неверное значение, команда может удалить важные данные (например, при пустой переменной выполнится rm -r /). Всегда проверяйте значение переменной перед использованием с rm -r:
# ОПАСНО (если $temp_dir пустой):
rm -r $temp_dir

# БЕЗОПАСНО — проверка перед удалением:
if [ -n "$temp_dir" ] && [ -d "$temp_dir" ]; then
    rm -r "$temp_dir"
else
    echo "ERROR: temp_dir is not set or does not exist"
fi