Задания по расписанию в 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

Article author: Andrei Olegovich

Похожие статьи
Linux
Debian
Ubuntu
CentOS
Rocky
Bash
Network Configuration
Files
Examine Free Disk Space
Combine .pdf Files
diff: Compare Files
find: Search for Files
kill: Finish Process
rename
make
signal: System Signals
env: Environmental Variables
localectl: langugae
systemctl: List of Active Services
Firewall
SCP: File Exchange
SSH: Remote Access
cron: Tasks in Timetable
sudo
Monitoring
C
C++
Banner image

Search this site

Subscribe to Telegram channel @aofeed to follow new articles and updates to old ones

Go to channel

@aofeed

Ask a question in the Telegram group

@aofeedchat

Contacts and cooperation:
I recommend our hosting beget.ru
Write to info@urn.su, info@aredel.com if you:
1. Want to write an article for our site or translate an article into your native language.
2. Want to place thematically relevant ads on the site.
3. Ads on my site pass maximum censorship. If you see an ad block unsuitable for school-age children, shocking or misleading - please contact us by e-mail
4. Found a mistake, inaccuracy, bug, etc. on the site. ... .......
5. Articles can be shared on social media by clicking a network icon: