Задать вопрос
Все статьи / VDS / Установка и настройка ПО / Ubuntu / Автоматизация задач с помощью cron в Ubuntu 18.04
Найти результаты:
Период:
с:
 
по:
Помощь в поиске

Помощь в поиске

apple banana
Найти записи, которые содержат хотя бы одно из двух слов.

+apple +juice
Найти записи, которые содержат оба слова.

+apple macintosh
Найти записи, которые содержат слово 'apple', но положение записей выше, если они также содержат 'macintosh'.

+apple -macintosh
Найти записи, которые содержат слово 'apple', но не 'macintosh'.

+apple ~macintosh
Найти записи, которые содержат слово 'apple', но если запись также содержит слово 'macintosh', rate it lower than if row does not. Это более "мягкий" чем поиск '+apple -macintosh', для которого наличие 'macintosh' вызывает что записи не будут возвращены вовсе.

+apple +(>turnover <strudel)
Найти записи, которые содержат слова 'apple' и 'turnover', или 'apple' и 'strudel' (в любом порядке), но ранг 'apple turnover' выше чем 'apple strudel'.

apple*
Найти записи, которые содержат такие слова как 'apple', 'apples', 'applesauce', или 'applet'.

"some words"
Найти записи, которые содержат точную фразу 'some words' (например записи содержащие 'some words of wisdom', но не "some noise words").

Автоматизация задач с помощью cron в Ubuntu 18.04

Автоматизация задач – важный элемент эффективного администрирования серверов. В Ubuntu 18.04 (как и в других дистрибутивах Linux) для этого часто используется cron – система планирования задач. 

В этой статье мы рассмотрим, как настроить cron, чтобы автоматизировать различные задачи на вашем сервере.

Что такое cron

Cron – это системный демон в Unix-подобных операционных системах, благодаря которому можно автоматизировать выполнение задач по расписанию. Он позволяет пользователям запускать команды или скрипты в конкретное время или через определенные интервалы времени.

Cron использует таблицы, чтобы определять, какие задачи и когда должны быть выполнены.

Как работает cron

Для управления задачами cron использует специальные файлы, которые называются crontab (сокращение от «cron table»). У каждого пользователя системы может быть личный файл crontab, в котором перечислены команды и время их выполнения. 

Когда система загружается, cron запускается как фоновый процесс и периодически проверяет файлы crontab, чтобы узнать, не пришло ли время для выполнения какой-либо задачи. Если время выполнения совпадает с текущим временем, cron запускает соответствующую команду. 

Основной файл настройки cron – это /etc/crontab. В нем записываются все задачи cron, а также расписание их выполнения. В каждой строке этого файла содержится информация о том, когда и какие команды или скрипты должны выполняться. Помимо этого, в файл можно добавлять служебные параметры, такие как почтовый адрес для отправки результатов выполнения задач, используемую оболочку и переменные среды. Например, вы можете указать, что результаты выполнения всех задач нужно отправлять на определенный электронный адрес. Такая возможность очень полезна для мониторинга и диагностики.

Каждый пользователь системы может создавать свои собственные задачи cron. Они хранятся в отдельных файлах в директории /var/spool/cron/crontabs/. Так каждый пользователь системы может управлять своими задачами независимо от других пользователей. Например, если у вас есть несколько пользователей на сервере, каждый из них может настроить crontab, чтобы автоматизировать свои задачи, не влияя на задачи других пользователей.

Синтаксис crontab

Каждое задание в crontab добавляется с новой строки. Строка состоит из двух частей: настроек расписания и непосредственно команды или скрипта. 

Как выглядит общий синтаксис:

[минута] [час] [день_месяца] [месяц] [день_недели] [команда]

Расписание

Как мы уже указали ранее, расписание в crontab состоит из пяти полей, разделённых пробелами:

  • Минута (возможные значения: 0–59). Указывает, в какую минуту часа должна выполняться задача.
  • Час (возможные значения: 0–23). Указывает, в какой час должна выполняться задача.
  • День месяца (возможные значения: 1–31). Указывает, в какой день месяца должна выполняться задача.
  • Месяц (возможные значения: 1–12, jan – dec). Указывает, в каком месяце должна выполняться задача.
  • День недели (возможные значения: 0–6, sun – mon). Указывает, в какой день недели должна выполняться задача.

Чтобы задать регулярность выполнения задач, используются специальные символы:

  • «*» – символ подстановки, который представляет все значения. Например, если в поле минут стоит *, задача будет выполняться каждую минуту. 
  • «,» помогает создать список значений. Например, «1,8» в поле часов задает выполнение задачи в 1 и 8 часов. Этот символ позволяет задать несколько временных точек для одной задачи без необходимости создавать несколько записей.
  • «-» задаёт диапазон значений. Например, 1-5 в поле дней недели означает выполнение задачи с понедельника по пятницу. 
  • «/» обозначает шаг. Например, */5 в поле часов означает выполнение задачи каждые пять часов. Этот символ позволяет задать регулярные интервалы выполнения задачи, что значительно упрощает настройку периодических задач.

Примеры:

Чтобы лучше понять гибкость и мощность cron, рассмотрим несколько дополнительных примеров расписания. Они помогут вам увидеть, как можно настроить выполнение задач в зависимости от ваших конкретных потребностей:

  1. Выполнять задачу дважды в день – в 8:00 и 18:00 вечера:
0 8,18 * * * 

  1. Выполнять задачу по понедельникам в 9:00 утра:
0 9 * * 1 

  1. Выполнять задачу 1-го числа каждого месяца в полночь:
0 0 1 * * 

  1. Выполнять задачу каждые 10 минут с 9:00 до 18:00 с понедельника по пятницу:
*/10 9-18 * * 1-5 

  1. Выполнять задачу каждую минуту:
* * * * *

Специальные символы Cron

Чтобы упростите создание расписания, в cron предусмотрены часто используемые переменные:

  • «@reboot» указывает выполнять задачу при загрузке системы. 
  • «@yearly» или «@annually» указывает, что задача должна выполняться раз в год. Аналог: 0 0 1 1 *. 
  • «@monthly» – указывает, что задача должна выполняться раз в месяц. Аналог: 0 0 1 * *. 
  • «@daily» или «@midnight» указывает выполнение задачи ежедневно. Аналог: 0 0 * * *. 
  • «@hourly» – задает выполнение задачи каждый час. Аналог: 0 * * * *. 

Установка cron 

В большинстве современных дистрибутивов cron уже включен в базовую систему, но, если по какой-то причине он отсутствует, его можно установить через пакетный менеджер.

Прежде чем устанавливать cron, полезно убедиться, что он не установлен на системе. Это можно сделать, выполнив команду:

crontab -l

Если cron установлен, команда покажет текущий список задач или сообщит, что crontab отсутствует для текущего пользователя. Если cron не установлен, будет выдано сообщение об ошибке. Например:

no crontab for johndoe

Перед началом установки рекомендуется обновить список доступных пакетов и их версий. Для этого пропишите:

sudo apt update

Эта команда обновит локальную базу данных пакетов, что позволит установить самые последние версии программ.

Чтобы установить cron, выполните следующую команду:

sudo apt install cron

Ubuntu запросит подтверждение установки, после чего начнется процесс загрузки и установки пакета cron. Обычно это занимает всего несколько секунд.

Когда установка завершится, убедитесь, что служба cron запущена и работает корректно. Для этого введите:

sudo systemctl status cron

Если cron запущен, вы увидите сообщение, что служба активна – «active (running)».

Чтобы служба cron автоматически запускалась при загрузке системы, выполните команду:

sudo systemctl enable cron

Управление файлами crontab 

Когда вы определились с расписанием задач и узнаете, какие задачи хотите запланировать, можно будет перейти к следующему шагу – поместить их в файл crontab, чтобы демон cron смог их прочитать и выполнить в указанное время. 

Важно понимать, что crontab – это специальный файл, который содержит расписание задач для cron, но непосредственно редактировать его не рекомендуется. Вместо этого существует команда crontab, которая облегчает работу с этим файлом и предотвращает возможные ошибки.

Чтобы отредактировать файл crontab, используйте команду:

crontab -e

Если вы запускаете эту команду впервые от имени текущего пользователя, система предложит вам выбрать текстовый редактор по умолчанию. 

В зависимости от настроек, вы можете увидеть следующий вывод:

no crontab for user - using an empty one
Select an editor.  To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]:

Введите номер, соответствующий редактору, который вы хотите использовать. Чтобы выбрать редактор по умолчанию (как правило, это nano), просто нажмите ENTER.

После этого откроется новый файл crontab, который может содержать комментарии с инструкциями по его использованию. Теперь вы можете добавить в него расписание своих задач. Главное – не забывайте прописывать каждую на отдельной строке. 

Чтобы сохранить и закрыть файл crontab, используйте подходящую комбинацию клавиш, в зависимости от выбранного редактора. В nano зажмите CTRL+X, а затем введите Y и нажмите Enter, чтобы подтвердить внесенные изменения.

Просмотр и удаление crontab

Если вы хотите просто просмотреть содержимое своего crontab, не редактируя его, используйте команду:

crontab -l

Эта команда выведет текущий файл crontab пользователя, позволяя увидеть все запланированные задачи.

Иногда возникает необходимость очистить crontab, удалив все задачи. Для этого можно использовать команду:

crontab -r

Важно! Будьте внимательны, эта команда немедленно удалит файл crontab. 

Если вы хотите, чтобы команда запрашивала подтверждение перед удалением, используйте флаг -i:

crontab -r -i

Результат:

crontab: really delete user's crontab? (y/n)

Введите y, чтобы удалить crontab, или n, чтобы отменить действие.

Чтобы временно отключить выполнение задачи, достаточно закомментировать строку, добавив символ # в начале. Это полезный способ, если вам нужно временно прекратить выполнение задачи, но вы не хотите удалять запись из crontab, чтобы затем восстанавливать её.

Управление выводом cron 

Поскольку задачи cron выполняются в фоновом режиме, их результаты не всегда очевидны и доступны пользователю. Теперь, когда вы знаете, как использовать команду crontab и как планировать задачи в cron, стоит разобраться с несколькими способами перенаправления вывода cron. Так вы сможете отслеживать их выполнение и получать необходимую информацию о работе ваших скриптов.

Уведомления по электронной почте

Один из способов отслеживания выполнения задач cron – перенаправление их вывода на электронную почту. Если на вашем сервере установлен и настроен почтовый агент (например, Sendmail), вы можете автоматически получать результаты выполнения задач на адрес электронной почты, который связан с вашей учетной записью пользователя Linux.

Чтобы указать другой адрес электронной почты, на который должны приходить результаты выполнения задач, можно использовать параметр MAILTO в начале файла crontab. 

Например, если вы хотите получать уведомления на почту admin@example.ru, ваш файл crontab может выглядеть следующим образом:

MAILTO="admin@example.ru"
0 4 * * * /usr/local/bin/backup.sh

Теперь cron будет запускать резервное копирование данных ежедневно в 4:00 утра, а затем отправлять свой вывод на указанный адрес электронной почты. Такой способ особенно удобен для мониторинга и быстрого реагирования на ошибки или важные события.

Уведомления в журнал

Сохранение результатов работы фоновых скриптов в журнал считается хорошей практикой, особенно для часто выполняемых задач. Если выполнение задачи прервалось, отчет об этой ситуации может потеряться в почте, а лог-файл всегда можно проанализировать, найти ошибки и исправить скрипт.

Чтобы перенаправить вывод задачи cron в лог-файл можно использовать оператор >. 

Например:

*/15 * * * * /usr/bin/python3 /home/user/scripts/data_cleanup.py > /var/log/cron_data_cleanup.log 2>&1

Скрипт очистки данных будет выполнять каждые 15 минут, а его вывод записываться в лог-файл /var/log/cron_data_cleanup.log. Такой подход поможет вам сохранить всю важную информацию о выполнении задачи, включая возникнувшие ошибки.

Отключение вывода

Возможно, вам не нужны результаты выполнения задачи cron. Если скрипт не выводит никакой информации и просто выполняется в фоновом режиме, можно полностью отключить уведомления и журналирование. 

Для этого перенаправьте вывод в пустую директорию /dev/null:

30 5 * * * /usr/local/bin/update_stats.sh > /dev/null 2>&1

В этом примере задача запускается ежедневно в 5:30 утра, а её вывод, включая ошибки, перенаправляется в /dev/null. Здесь «2>&1» означает, что стандартный вывод ошибок также перенаправляется в /dev/null.

Проверка работы скриптов

Даже если вывод результатов выполнения задач отключён, вы все равно можете проверить, работают ли ваши скрипты, через журнал syslog. 

Чтобы найти записи, которые связаны с cron, используйте команду grep:

grep CRON /var/log/syslog

Если задача cron выполняется корректно, вы увидите соответствующие записи в syslog. Например, вы можете увидеть записи о запуске задач и любых возникающих ошибках. 

Заключение

Автоматизация задач с помощью cron в Ubuntu 18.04 – это полезный и гибкий инструмент для системных администраторов и пользователей. С помощью cron можно легко настроить выполнение регулярных задач, включая резервное копирование, очистку данных и мониторинг системы. Он значительно повышает эффективность управления сервером.

Предыдущая статья
Как установить FTP-сервер на Ubuntu
Следующая статья
Установка Java в Ubuntu 22.04