Отредактировано 4 несколько месяцев назад от ExtremeHow Редакционная команда
FedoraКронПланирование задачАвтоматизацияКомандная строкаТерминалАдминистрирование системыКонфигурацияПрограммное обеспечениеКомпьютеры
Перевод обновлен 4 несколько месяцев назад
Планирование задач является важной частью управления серверами и автоматизации в среде Linux. На Fedora, одной из самых популярных дистрибуций Linux, одним из наиболее распространенных инструментов для планирования задач является cron. Cron — это планировщик задач на основе времени в операционных системах, подобных Unix, который может автоматически запускать сценарии или команды через определенные интервалы или в заданное время. Вы можете использовать его для автоматизации системного обслуживания, резервного копирования, мониторинга или любой повторяющейся задачи. Это полное руководство покажет вам, как планировать задачи с помощью cron на Fedora.
Cron использует конфигурационный файл, называемый crontab (сокращенно от cron table), для управления планированием задач. Каждый пользователь в системе может иметь свой собственный файл crontab. В файле crontab каждая строка представляет собой запланированную задачу. Cron проверяет содержимое crontab для каждого пользователя и выполняет задачи, определенные в нем. Эти задачи состоят из команды и расписания.
Основной синтаксис для записи в crontab следующий:
* * * * * команда для выполнения
* * * * * команда для выполнения
Этот синтаксис значит:
Пример того, как это может выглядеть:
30 2 * * 1 /home/user/backup.sh
30 2 * * 1 /home/user/backup.sh
Эта задача cron будет выполнять сценарий /home/user/backup.sh
каждый понедельник (1-й обозначает понедельник) в 2:30 утра. Давайте подробнее рассмотрим каждую часть, чтобы понять, как мы можем использовать этот инструмент в своих интересах.
Большинство установок Fedora имеют установленную службу cron по умолчанию. Если по какой-то причине она не установлена, вы можете легко ее добавить. Чтобы убедиться, что cron установлен, используйте следующую команду:
sudo dnf install cronie
sudo dnf install cronie
Эта команда установит демон cron, который отвечает за управление задачами cron. После установки убедитесь, что служба работает:
sudo systemctl start crond sudo systemctl enable crond
sudo systemctl start crond sudo systemctl enable crond
Команда start
запускает службу cron, а команда enable
гарантирует, что она будет запускаться автоматически при загрузке.
Пользователи могут создать файл crontab для планирования задач. Это можно сделать, введя следующую команду:
crontab -e
crontab -e
Эта команда открывает редактор, в котором вы можете писать свои задачи cron. Если вы используете crontab в первый раз, вас могут попросить выбрать редактор. Выберите ваш любимый текстовый редактор (например, nano, vim и т.д.).
При редактировании вашего crontab важно убедиться, что каждая команда задачи cron указана правильно в описанном выше синтаксисе. После добавления ваших задач сохраните файл и выйдите из редактора. Cron автоматически зарегистрирует изменения.
Теперь, когда мы знаем, как получить доступ к файлу crontab и создать задачи cron, давайте рассмотрим несколько общих примеров:
0 * * * * /home/user/hourly-task.sh
0 * * * * /home/user/hourly-task.sh
Это выполнит hourly-task.sh
из домашнего каталога в начале каждого часа.
30 14 1 3 * echo "Не забудьте проверить логи" >> /home/user/notes.txt
30 14 1 3 * echo "Не забудьте проверить логи" >> /home/user/notes.txt
Эта команда добавит напоминание в notes.txt
в 14:30 1 марта.
0 0 * * 0/2 /home/user/cleanup.sh
0 0 * * 0/2 /home/user/cleanup.sh
В этом случае cleanup.sh
выполняется каждые второе воскресенье в полночь.
Cron не загружает переменные окружения из .bashrc
, .profile
или аналогичных файлов пользователя. Таким образом, если ваш скрипт зависит от определенных переменных окружения, вы можете определить их прямо в вашем crontab файле перед задачей cron:
PATH=/usr/local/bin:/bin:/usr/bin:/home/user/bin 30 1 * * * /home/user/some_command --options
PATH=/usr/local/bin:/bin:/usr/bin:/home/user/bin 30 1 * * * /home/user/some_command --options
Каждая задача cron выполняется в определенном окружении, поэтому важно убедиться в правильности путей и переменных, установленных в файле crontab.
Cron позволяет использовать несколько строк вместо пяти полей времени и даты, что упрощает планирование:
@reboot
: Выполняется один раз после загрузки.@yearly
или @annually
: Выполняется один раз в год, то есть 0 0 1 1 *
.@monthly
: Выполняется один раз в месяц, то есть 0 0 1 * *
.@weekly
: Выполняется раз в неделю, то есть 0 0 * * 0
.@daily
: Выполняется каждый день, то есть 0 0 * * *
.@hourly
: Выполняется каждый час, то есть 0 * * * *
.Эти предопределенные строки делают запись в crontab более читаемой и быстрее создаваемой.
Например, чтобы запускать daily-maintenance.sh
один раз в день, вы можете использовать:
@daily /home/user/daily-maintenance.sh
@daily /home/user/daily-maintenance.sh
По умолчанию cron отправляет вывод (и stdout и stderr) на email пользователя на локальной машине. Если вы хотите перенаправить его в файл, вы можете изменить команду следующим образом:
* * * * * /home/user/script.sh > /home/user/logfile 2>&1
* * * * * /home/user/script.sh > /home/user/logfile 2>&1
Здесь 2>&1
перенаправляет стандартную ошибку (stderr) на стандартный вывод (stdout), а вывод записывается в logfile
.
Чтобы перечислить все задачи cron для текущего пользователя, введите:
crontab -l
crontab -l
Чтобы удалить файл crontab для текущего пользователя, используйте:
crontab -r
crontab -r
Отладка может быть сложной, потому что cron имеет свою собственную среду и не загружает конфигурацию оболочки пользователя по умолчанию. Вот несколько шагов для устранения неисправностей ваших задач cron:
/var/log/cron
или с помощью команды journalctl
в Fedora.В то время как базовое планирование охватывает большинство задач, можно использовать расширенные методы для более сложных потребностей в планировании:
Вы можете указать список значений для любого поля в crontab. Например, чтобы выполнять задачу в первый и пятнадцатый день каждого месяца:
0 0 1,15 * * /home/user/payroll.sh
0 0 1,15 * * /home/user/payroll.sh
Шаговые значения позволяют определить интервалы в пределах диапазонов. Например, чтобы выполнять задачу каждые 10 минут:
*/10 * * * * /home/user/check-system.sh
*/10 * * * * /home/user/check-system.sh
Символ */10
означает "каждые десять минут".
Cron — это мощный и универсальный инструмент для автоматизации задач, доступный на Fedora и многих других системах, подобных Unix. Точно устанавливая интервалы времени и создавая сценарии для повторяющихся задач, системные администраторы и пользователи могут значительно повысить продуктивность и надежность системы. Понимание и использование возможностей cron может значительно сократить ручную работу, эффективно планируя задачи, которые иначе требовали бы постоянного внимания и вмешательства.
С помощью этого руководства вы теперь должны иметь твердое понимание того, как настроить и управлять задачами cron на Fedora. Независимо от того, занимаетесь ли вы базовым планированием, используете переменные окружения, перенаправляете вывод или используете расширенные методы планирования, cron предлагает множество опций для настройки управления задачами в соответствии с вашими конкретными потребностями.
Подробнее изучите пакет crony и экспериментируйте с различными задачами, чтобы исследовать дополнительные опции и возможности, которые помогут оптимизировать операции. Автоматизация — это ключ к эффективному управлению системой, и освоение cron — это обязательный навык для пользователей Linux. Продолжайте итерации и уточнение вашего расписания задач, и используйте силу cron, чтобы ваша система работала гладко и эффективно.
Если вы найдете что-то неправильное в содержании статьи, вы можете