cron — планировщик заданий для Linux и Unix-подобных операционных систем. Он предустановлен во всех дистрибутивах Linux и наиболее подходит для автоматизации повторяющихся задач.
Чтобы cron работал правильно, вы должны периодически проверять, что утилита работает нормально в вашей системе. Вы можете сделать это четырьмя различными способами, включая проверку состояния службы cron, изучение журналов cron, запуск тестового задания cron и составление списка запущенных процессов в вашей системе.
Оглавление
Что такое cron?
Тихий обработчик заданий cron автоматизирует и планирует системные задачи. Пользователи, которые настраивают и обслуживают программные среды, используют cron для планирования периодических запусков таких заданий, как команды или сценарии оболочки (также называемые заданиями cron), в фиксированное время или интервалы.
cron автоматизирует задачи по обслуживанию или администрированию системы, которые вам, возможно, придется выполнять часто.
В Linux доступно несколько реализаций. Версия, которая у вас будет, зависит от вашего дистрибутива. «Vixie cron», названный в честь его первоначального разработчика Пола Викси, широко распространен и используется по умолчанию в Debian и Ubuntu. В Arch нет какой-либо версии cron в пользу таймеров systemd.
cronie — это форк Vixie cron, доступный как стандартный пакет Arch. Чтобы установить его, используйте pacman:
sudo pacman -S cronie
Затем запустите и включите его с помощью:
sudo systemctl start cronie.service
sudo systemctl enable cronie.service
Вы можете узнать, какая версия cron установлена в вашей системе, просмотрев ее справочную страницу:
man cron
Как проверить, работает ли cron в Linux
Вот несколько способов проверить, правильно ли работает cron:
1. Проверьте состояние службы cron в Linux.
Один из способов проверить, работает ли cron, — проверить состояние службы cron, выполнив базовую команду Linux. Откройте терминал Linux, нажав Ctrl + Alt + T, и используйте команду systemctl, чтобы проверить состояние cron:
sudo systemctl status cron
Если вы видите следующий вывод, это означает, что cron активен и работает нормально в вашей системе.
Но что, если cron находится в неактивном состоянии, как показано ниже?
Запустить службу можно так:
sudo systemctl start cron.service
После запуска службы cron включите ее, чтобы она запускалась при каждой перезагрузке системы:
sudo systemctl enable cron.service
2. Проверьте журналы cron в Linux.
Другой способ проверить правильность работы cron — изучить файлы журналов. Журналы cron хранятся в каталоге /var/log/syslog в Linux.
syslog — это протокол, который системы Linux используют для централизации журналов данных событий. Затем журналы доступны для выполнения аудита, мониторинга, устранения неполадок, составления отчетов и других необходимых ИТ-задач.
Вы можете просмотреть журналы заданий cron в файле системного журнала, выполнив следующую команду:
grep 'cron' /var/log/syslog
Вы увидите аналогичный вывод, указывающий, что cron работает нормально и его журналы сохраняются в файле журнала:
Поскольку папка системного журнала помимо журналов cron содержит и другие системные журналы, может быть немного сложно проверить в файле только журналы, связанные с cron. Эту проблему можно решить, создав отдельный файл журнала, в котором будут храниться только записи cron, которые появляются в файле системного журнала.
В этом примере мы будем использовать редактор nano, но вы можете использовать любой удобный вам редактор.
Откройте следующий файл с помощью nano:
nano /etc/rsyslog.d/50-default.conf
Найдите строку, которая начинается с:
#cron.*
Раскомментируйте эту строку, удалив знак решетки (#). Затем сохраните и выйдите из файла, нажав Ctrl + X, затем нажмите Y и нажмите Enter.
Перезапустите службу rsyslog, выполнив следующую команду:
sudo service rsyslog restart
Теперь вы будете получать журналы в файле cron.log, расположенном в каталоге /var/log.
Если ваш терминал не может получить какие-либо журналы, это может означать, что cron не запущен. В этом случае проверьте, работает ли cron или нет, используя другие методы.
3. Запуск задания cron в Linux
Вы также можете проверить, работает ли cron, просто создав тестовое задание cron и выполнив его. Если задание успешно выполнило задачу, это означает, что оно работает нормально.
Сначала вам нужно создать скрипт Bash. Сценарии Bash позволяют автоматизировать повседневные задачи в Linux.
Давайте создадим сценарий Bash, который будет печатать «мое задание cron работает!» в файл TXT. Чтобы создать файл, сначала найдите свой текущий рабочий каталог с помощью этой команды:
pwd
Создайте файл в текущем каталоге с помощью сенсорной команды:
touch file.txt
После этого создайте файл Bash с помощью nano:
nano script.sh
Добавьте в файл следующее содержимое:
#! /usr/bin/bash
echo "my cronjob is working!" >> /home/username/file.txt
Обязательно укажите правильное местоположение созданного вами текстового файла. Сохраните и выйдите из файла, нажав Ctrl + X, затем Y и нажмите Enter.
Дайте разрешения на выполнение скрипту Bash:
chmod +x script.sh
Теперь создайте задание cron для выполнения сценария. Для этого откройте файл crontab с помощью:
crontab -e
Введите следующую строку в конец файла.
* * * * * /path/to/script.sh
Пять звездочек соответствуют времени выполнения: первая звездочка представляет минуты (0–59), вторая — часы (в 24-часовом формате, поэтому 13:00 — это 13, полночь начинается с 0), третья звездочка означает день (0-7, 0 и 7 — воскресенье), четвертая — месяц, а последняя звездочка — год.
В файле также указывается имя исполняемого файла и путь к нему.
После сохранения и закрытия файла вы увидите на терминале сообщение «crontab: установка нового crontab».
Чтобы проверить, сработало ли задание cron или нет, перейдите в каталог file.txt и распечатайте его содержимое на терминале, используя команду cat:
cat file.txt
Это означает, что cron работает нормально.
4. Проверьте запущенные процессы в Linux
Еще один способ проверить, работает ли демон cron, — составить список запущенных процессов в вашей системе. Этого можно добиться с помощью команды ps. Демон cron будет отображаться в выводе как crond.
ps aux | grep cron
Это подтверждает, что процесс cron запущен в вашей системе Linux.
Автоматизируйте и планируйте системные задачи с помощью cron
cron — одна из самых важных утилит в Linux, которая позволяет системе работать эффективно. Иногда вам нужно проверить, работает ли cron, при устранении неполадок системы.
Вы можете добиться этого, проверив журналы cron или просмотрев запущенные процессы в вашей системе. Вы также можете проверить статус cron с помощью утилиты systemctl. Кроме того, запуск тестового задания cron также может сказать вам, работает ли служба или нет.
Бесперебойная работа cron позволяет автоматизировать и планировать повседневные системные задачи. Большинство заданий cron автоматически создаются установленными приложениями. Автоматизация и планирование задач улучшают общую производительность системы и поддерживают ее работоспособность.