Введение
В этом практическом занятии (лабораторной работе) вы узнаете, как настраивать запланированные задачи в Linux. Вы познакомитесь с двумя мощными инструментами: командой watch, которая позволяет повторно выполнять команды с короткими интервалами, и утилитой crontab, которая позволяет запланировать выполнение задач в определенные моменты времени. Эти навыки важны для системных администраторов и всех, кто нуждается в автоматизации повторяющихся задач в системе Linux.
Использование команды watch
Команда watch позволяет повторно выполнять другую команду и просматривать ее вывод в режиме реального времени. Это полезно для мониторинга изменений или для регулярного выполнения команды с короткими интервалами.
Откройте терминал. Вы должны находиться в директории
/home/labex/project. Если вы не уверены, вы всегда можете проверить текущую директорию с помощью командыpwd.Мы будем использовать команду
watchдля отображения текущей даты и времени каждые 5 секунд. Введите следующую команду:watch -n 5 dateВот что делает эта команда:
watch- это команда, с помощью которой мы повторяем другую команду.-n 5- это опция, которая сообщает командеwatchждать 5 секунд между каждым выполнением. Если вы опустите эту опцию,watchбудет использовать интервал по умолчанию в 2 секунды.date- это команда, которуюwatchбудет выполнять повторно. Она отображает текущую дату и время.
После ввода команды вы должны увидеть полноэкранное отображение, которое обновляется каждые 5 секунд. Оно будет выглядеть примерно так:

Верхняя строка показывает выполняемую команду и частоту обновления. Остальная часть экрана показывает вывод команды date.
Чтобы выйти из режима команды
watch, нажмитеCtrl+C. Эта комбинация клавиш обычно используется в Linux для завершения выполняющейся команды.Если вы не остановите команду
watch, она будет продолжать работать бесконечно, что может помешать вам вводить новые команды в терминале.
Установка Crontab
Перед тем как использовать crontab для планирования задач, необходимо убедиться, что он установлен в нашей системе. Большинство дистрибутивов Linux поставляются с предустановленным crontab, но хорошей практикой является проверить его наличие и установить при необходимости.
Сначала проверим, установлен ли crontab. Для этого попробуем выполнить команду crontab:
crontab -lЕсли crontab установлен, вы увидите либо список текущих cron-задач, либо сообщение "no crontab for labex".
Если вы увидите сообщение об ошибке, говорящее, что команда не найдена, необходимо установить crontab. На системах на основе Ubuntu или Debian можно установить его с помощью следующих команд:
sudo apt update sudo apt install cronВам будет предложено ввести пароль. Введите его (обратите внимание, что для безопасности при вводе символы не отображаются) и нажмите Enter.
После установки запустите службу cron:
sudo service cron startЭта команда запускает службу cron немедленно.
Теперь убедитесь, что cron установлен и запущен:
sudo service cron statusВы должны увидеть вывод, указывающий, что служба cron запущена.
Введение в Crontab
Теперь, когда мы установили crontab, давайте узнаем, как им пользоваться. Crontab используется для планирования задач на определенные моменты времени, даже когда вы не вошли в систему.
Сначала посмотрим на текущие записи в вашем crontab (если они есть). Используйте следующую команду:
crontab -lОпция
-lозначает "list" (список). Эта команда отображает все запланированные задачи в вашем crontab.Если вы еще не настроили никаких cron-задач, вы увидите сообщение "no crontab for labex". Это нормально для нового пользователя.
Теперь откроем crontab для редактирования. Используйте эту команду:
crontab -eОпция
-eозначает "edit" (редактировать). Эта команда открывает ваш файл crontab в текстовом редакторе.Если вы впервые используете crontab, вас может попросить выбрать редактор. Вы увидите список номеров, соответствующих разным редакторам. Для начинающих nano (обычно вариант 1) - хороший выбор, так как он проще в использовании. Введите номер для nano и нажмите Enter.

Если вас не попросили выбрать редактор, не беспокойтесь. Это означает, что для вас уже настроен редактор по умолчанию.
Как только редактор откроется, вы увидите пустой файл (или любые существующие cron-задачи, если они были). Не добавляйте ничего пока; мы сделаем это на следующем шаге. Пока просто ознакомьтесь с редактором.
Если вы используете nano, внизу экрана вы увидите некоторые команды справки. Символ
^обозначает клавишу Ctrl. Таким образом,^Xозначает "Ctrl+X", которая используется для выхода из nano.Выйдите из редактора без внесения каких-либо изменений. В nano вы можете сделать это, нажав Ctrl+X. Если вас спросят, хотите ли вы сохранить изменения, нажмите 'N' (No - Нет).
Понимание синтаксиса Crontab
Перед тем как добавить cron-задачу, важно понять синтаксис. Crontab использует определенный формат для определения времени выполнения задачи.
Базовый формат cron-задачи выглядит так:
* * * * * command_to_executeКаждая звездочка представляет собой определенную единицу времени, слева направо:
- Минуты (0 - 59)
- Часы (0 - 23)
- День месяца (1 - 31)
- Месяц (1 - 12)
- День недели (0 - 7, где 0 и 7 обозначают воскресенье)
Вот несколько примеров, которые помогут вам понять:
30 2 * * *означает "В 2:30 утра каждый день"0 9 * * 1-5означает "В 9:00 утра с понедельника по пятницу"*/15 * * * *означает "Каждые 15 минут"
Вы можете использовать следующие специальные символы:
*: любое значение,: разделитель списка значений-: диапазон значений/: шаг значений
Давайте разберем более сложный пример:
15,45 9-17 * * 1-5 /path/to/script.shЭто означает: "Запустить /path/to/script.sh в 15 и 45 минут каждого часа с 9 утра до 5 вечера, с понедельника по пятницу"
Понимание этого синтаксиса является ключом к созданию эффективных cron-задач. Отведите немного времени, чтобы подумать, как можно запланировать разные задачи с использованием этого формата.
Добавление задачи в Cron
Теперь, когда мы поняли синтаксис, давайте добавим простую cron-задачу, которая будет записывать текущую дату в файл каждую минуту.
Откройте ваш crontab для редактирования:
crontab -eКак только редактор откроется, добавьте следующую строку в ваш crontab:
* * * * * date >> /home/labex/project/date_log.txt

Давайте разберем это:
- Пять звездочек
* * * * *означают "каждую минуту каждого часа каждого дня каждого месяца и каждого дня недели". date- это команда, которую мы выполняем.>>используется для добавления вывода в файл (а не для перезаписи его содержимого)./home/labex/project/date_log.txt- это файл, в котором мы сохраняем вывод.
Сохраните изменения и выйдите из редактора. Если вы используете nano:
- Нажмите
Ctrl+Xдля выхода. - Нажмите
Y, чтобы подтвердить, что вы хотите сохранить изменения. - Нажмите
Enter, чтобы подтвердить имя файла.
- Нажмите
После выхода вы должны увидеть сообщение "crontab: installing new crontab". Это подтверждает, что ваши изменения были сохранены.
Мониторинг задачи Cron
Теперь, когда мы настроили cron-задачу, проверим, работает ли она правильно.
Сначала нужно подождать как минимум одну минуту после добавления cron-задачи. Это связано с тем, что cron-задачи запускаются в начале каждой минуты, поэтому может пройти до минуты, прежде чем ваша задача запустится в первый раз.
После ожидания используйте команду
cat, чтобы просмотреть содержимое файла журнала:cat /home/labex/project/date_log.txtКоманда
catотображает содержимое файла непосредственно в терминале.Вы должны увидеть как минимум одну строку с датой и временем. Она будет выглядеть примерно так:
Sat Aug 5 10:15:01 UTC 2023Если вы ничего не видите, подождите еще одну минуту и попробуйте снова. Иногда cron-задача может запуститься с задержкой.
Чтобы увидеть, как работает cron-задача, вы можете использовать команду
watch, которую мы изучали ранее, для мониторинга файла в режиме реального времени:watch -n 60 cat /home/labex/project/date_log.txtЭто обновление будет происходить каждые 60 секунд, показывая вам новые записи по мере их добавления.
Дайте этой команде работать несколько минут. Вы должны увидеть, что каждую минуту добавляется новая строка.
Когда вы закончите наблюдение, нажмите
Ctrl+C, чтобы выйти из командыwatch.
Резюме
Поздравляем! Вы успешно завершили лабораторную работу "Настройка запланированных задач". Вы научились:
- Использовать команду
watchдля повторного выполнения команд с короткими интервалами. - Устанавливать и настраивать crontab на своей системе.
- Просматривать и редактировать свой crontab с помощью команд
crontab -lиcrontab -e. - Понимать синтаксис crontab для планирования задач.
- Создавать простую cron-задачу, которая запускается каждую минуту.
- Мониторить вывод вашей cron-задачи.
Эти навыки являются фундаментальными для автоматизации задач и мониторинга систем в Linux-окружениях. По мере продолжения изучения Linux вы обнаружите множество других применений запланированных задач в системном администрировании и автоматизации.
Помните, что хотя мы использовали простой пример записи даты, вы можете использовать cron-задачи для более сложных задач, таких как резервное копирование данных, обновление программного обеспечения или запуск скриптов системного обслуживания. Будьте всегда осторожны при настройке cron-задач, особенно если они связаны с критически важными системными операциями.



