Задания по расписанию в Linux cron

Содержание
Введение
Инструкция
Каждую минуту
Каждый час
Каждый день
Несколько раз в день
После перезагрузки
Запуск из других директорий
Python скрипт по расписанию
Отключить отправку email
Похожие статьи

Введение

wiki

cron — классический демон (компьютерная программа в системах класса UNIX), использующийся для периодического выполнения заданий в определённое время.

Регулярные действия описываются инструкциями, помещенными в файлы crontab и в специальные каталоги.

Название cron образовано от греческого слова χρόνος (хрόнос) — время (по-английски — chronos).

В системах на базе systemd cron фактически замещён встроенным механизмом systemd.timer.

Инструкция

Файлы crontab, создаваемые для отдельных пользователей, находятся в каталоге

/usr/spool/cron/crontabs/

или

/var/spool/cron/tabs/.

Редактировать их вручную не рекомендуется, для этого используют команду crontab -e .

Файлы crontab , используемые для управления всей системой, располагаются в каталоге

/etc/cron.d/.

Кроме того, в каталогах

/etc/cron.daily/, /etc/cron.weekly/ и /etc/cron.monthly/

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

Запускать скрипт каждую минуту

crontab -e

*/1 * * * * /home/andrei/script.sh

Или просто

* * * * * /home/andrei/script.sh

Запускать скрипт каждый час

crontab -e

0 * * * * /home/andrei/script.sh

Этот скрипт будет выполняться каждую нулевую минуту.

Запускать скрипт каждый день

crontab -e

0 1 * * * /home/andrei/script.sh

Этот скрипт будет выполняться каждую день в час ночи.

Запускать скрипт несколько раз в день

Скрипт будет запускаться в 7:00, 10:00 и 16:00

crontab -e

0 7 * * * /home/andrei/cronscript.sh > /dev/null 2>&1 0 10 * * * /home/andrei/cronscript.sh > /dev/null 2>&1 0 16 * * * /home/andrei/cronscript.sh > /dev/null 2>&1

Этот скрипт будет выполняться каждую день в час ночи. > /dev/null 2>&1 отключает отправку писем с уведомлениями .

После перезагрузки

В примере сервис sshd будет перезапускаться после каждого ребута.

cd
touch restart_sshd.sh
echo "systemctl restart sshd" > restart_sshd.sh
crontab -e

@reboot /home/andrei/restart_sshd.sh

no crontab for andrei - using an empty one
crontab: installing new crontab

Запуск из других директорий

По умолчанию cron запускает скрипты из домашней директории

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

То есть такое задание не выполнится

* * * * * script.sh

А это сработает:

* * * * * /home/andrei/script.sh

Чтобы запустить скрипт из другой директории - в неё нужно сперва перейти

* * * * * cd monitoring/new_scripts && $(which bash) script.sh

cron перейдёт в нужную директорию а потом увидев && поймёт что нужно сделать И выполнение скрипта.

Логическое или можно задать с помощью ||

Изображение баннера

Python скрипт по расписанию

Чтобы запустить .py скрипт из произвольной директории - перейдите в неё и выполните $(which python3) название файла

Например:

crontab -e

* * * * * cd python_scripts && $(which python3) script.py

Отключить отправку email

Чтобы запустить отключить оповещения по email, которые посылает вам cron такие как

You have new mail in /var/spool/mail/andrei

Нужно перенаправить вывод в /dev/null

Например:

crontab -e

* * * * * /home/andrei/script.sh > /dev/null 2>&1

Похожие статьи
Linux
FAQ
Debian
Ubuntu
CentOS
Rocky
Bash
Настройка сети
Файлы, директории, ссылки…
Изучить свободное место на диске
Объединить .pdf файлы
diff: сравнение файлов
find: поиск файлов
wget: скачивание файлов
kill: завершить процесс
curl
make
signal: системные сигналы
env: переменные окружения
localectl: язык
systemctl: Список активных сервисов
Firewall
SCP: обмен файлами;
SSH: удалённый доступ
cron: задания по расписанию
sudo
Мониторинг ресурсов
C
C++
Изображение баннера

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: