- Linux Start Restart and Stop The Cron or Crond Service
- Commands for RHEL/Fedora/CentOS/Scientific/Rocky/Alma Linux user
- Task: Start cron service
- Task: Stop cron service
- Task: Restart cron service
- Commands for Ubuntu/Mint/Debian based Linux distro
- Task: Debian Start cron service
- Task: Debian Stop cron service
- Task: Debian Restart cron service
- Task : Start the cron service at boot time
- A note about Apline Linux user
- FreeBSD Unix specific commands
- Summing up
- Как выполнить автоматический перезапуск сервиса Linux
- Часто происходит спонтанное падение сервиса. Пользователю приходится заниматься их ручным восстановлением. Проблемы как таковой нет, если это происходит на домашнем компьютере. Даже больше – это хорошо, ведь появляется реальная возможность определить состояние сервиса, выявить неисправности и устранить их. Но совсем другая ситуация, когда дело касается серверов и VPS сервисов, которые должны работать постоянно для обеспечения доступа к веб-сайту или приложению. В этой статье рассмотрим способ настройки автоматического перезапуска сервиса Linux несколькими способами: с помощью скрипта мониторинга периодически запускаемого через cron и в systemd.
- Автоматический перезапуск в Systemd
- Автоматический перезапуск скриптом
- Linux Execute Cron Job After System Reboot
- Linux execute cron job after system reboot
- Running job at startup (boot time)
- How to run a cron job automatically after server reboot
- Start crond automatically at boot time
- Getting push notification when the Linux system comes online
- Как настроить Cron планировщик задач linux.
- Настройка Cron
- Как работает Cron?
- Настройка Cron
- Синтаксис crontab
- Примеры настройки cron
- Отладка работы
- Выводы
Linux Start Restart and Stop The Cron or Crond Service
H ow do I start, restart and stop the cron service under a Linux / BSD / UNIX-like operating systems using command prompt?
The Cron (crond) daemon or service is use to execute scheduled commands or scripts. cron wakes up every minute, examining all stored crontabs, checking each command to see if it should be run in the current minute.
Tutorial details | |
---|---|
Difficulty level | Easy |
Root privileges | Yes |
Requirements | Linux |
Est. reading time | 2 mintues |
Commands for RHEL/Fedora/CentOS/Scientific/Rocky/Alma Linux user
If you are using Redhat (RHEL)/Fedora/CentOS/Rocky/Alma Linux use the following commands.
Task: Start cron service
To start the cron service, use:
# /etc/init.d/crond start
OR RHEL/CentOS 5.x/6.x user:
# service crond start
OR RHEL/Centos Linux 7.x user:
# systemctl start crond.service
Task: Stop cron service
To stop the cron service, use:
# /etc/init.d/crond stop
OR RHEL/CentOS 5.x/6.x user:
# service crond stop
OR RHEL/Centos Linux 7.x user:
# systemctl stop crond.service
Task: Restart cron service
To restart the cron service, use:
# /etc/init.d/crond restart
OR RHEL/CentOS 5.x/6.x user:
# service crond restart
OR RHEL/Centos Linux 7.x user:
# systemctl restart crond.service
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Commands for Ubuntu/Mint/Debian based Linux distro
If you are using Debian or Ubuntu or Mint Linux the following commands.
Task: Debian Start cron service
To start the cron service, use:
# /etc/init.d/cron start
OR
$ sudo /etc/init.d/cron start
OR
$ sudo service cron start
Task: Debian Stop cron service
To stop the cron service, use:
# /etc/init.d/cron stop
OR
$ sudo /etc/init.d/cron stop
OR
$ sudo service cron stop
Task: Debian Restart cron service
To restart the cron service, use:
# /etc/init.d/cron restart
OR
$ sudo /etc/init.d/cron restart
OR
$ sudo service cron restart
Task : Start the cron service at boot time
It is recommended that you start the service at boot time so that job can run w/o problems.
If you are using Redhat (RHEL)/Fedora Core/Cent OS Linux use the following commands to ensure that the service remains enabled after a reboot:
# chkconfig crond on
You can use a text based GUI tool called ntsysv to enable crond service:
# ntsysv
If you are using Debian or Ubuntu Linux use the following commands to ensure that the service remains enabled after a reboot:
# rcconf
OR
$ sudo rcconf
You can use command line tool update-rc.d:
# update-rc.d cron defaults
OR
$ sudo update-rc.d cron defaults
A note about Apline Linux user
Use anyone of the following command on Alpine Linux to restart crond service:
# /etc/init.d/crond restart
## OR ##
# service crond restart
Other commands for Alpine Linux users:
# service crond start #
# service crond stop #
FreeBSD Unix specific commands
On FreeBSD Unix system we use the service command as follows:
$ sudo service cron restart
$ sudo service cron start
$ sudo service cron stop
$ sudo service cron status
Summing up
You learned how to stop, start, and restart the cron/crond service on Linux operating systems.
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник
Как выполнить автоматический перезапуск сервиса Linux
Часто происходит спонтанное падение сервиса. Пользователю приходится заниматься их ручным восстановлением. Проблемы как таковой нет, если это происходит на домашнем компьютере. Даже больше – это хорошо, ведь появляется реальная возможность определить состояние сервиса, выявить неисправности и устранить их. Но совсем другая ситуация, когда дело касается серверов и VPS сервисов, которые должны работать постоянно для обеспечения доступа к веб-сайту или приложению. В этой статье рассмотрим способ настройки автоматического перезапуска сервиса Linux несколькими способами: с помощью скрипта мониторинга периодически запускаемого через cron и в systemd.
Автоматический перезапуск в Systemd
По умолчанию выставлено, что в случае падения сервиса Systemd ничего с ним не будет делать. Но пользователь всегда может выстроить настройки таким образом, чтобы в случае падения или остановки сервис автоматически перезапускался. Для этого используется директива Restart, которую надо добавить в секцию Service. Дальше рассмотрим пример настройки автоматического перезапуска сервиса Apache:
Здесь RestartSec указывает, сколько ждать перед перезапуском сервиса. Когда завершите работу, сохраните изменения и выполните команду daemon-reload, чтобы перечитать конфигурацию:
Дальше, чтобы проверить все ли работает исправно, посмотрите состояние процесса, завершите процесс сигналом kill:
$ sudo systemctl status apache2
Еще раз посмотрите состояние, процесс должен быть запущен. Для установки запуска инициализации каждый раз, используйте специальную директиву Restart: always. Но пользоваться ею необходимо крайне осторожно, ведь она не позволит завершить процесс, даже если в этом возникнет необходимость. Если процесс постоянно падает, чтобы он перезапускался, можно добавить лимит на количество перезапусков в секцию Service:
Здесь StartLimitBurst и StartLimitIntervalSec указывают на важность перезапуска сервиса пять раз, и если он все эти пять раз упадёт, то оставить его и не трогать. Вторая директива ограничивает время перезапусков сервиса до 500 секунд.
Автоматический перезапуск скриптом
Пожалуй, самый надежный и безотказный способ, работающий во всех версиях Linux. В том же Apache легко выстроить автоматический перезапуск при помощи скрипта. Для этого необходимо ввести команду:
ps -A | grep apache2 || systemctl start apache2
Файл нужно сохранить и обязательно сделать его исполняемым:
chmod ugo+x /usr/local/bin/apache-monitor.sh
Не забудьте добавить запись в cron для периодического запуска скрипта:
На этом все. Да, настроить автоматический перезапуск сервиса не так просто, как может показаться на первый взгляд. Но это важная способность, поэтому ей необходимо уделить внимание – оно того определенно стоит.
Источник
Linux Execute Cron Job After System Reboot
I am on Red Hat Enterprise Linux server. Is there is an easy way to run script or command at boot time after fresh reboot command? How can I execute cron job on Linux after system restart?
crontab is the program used to install, deinstall, or list the tables used to drive the cron daemon in Vixie Cron. Each user can have their crontab. You or user can use the crontab command to edit cron jobs. This page shows how to run cron job after Linux system reboot.
Tutorial details | |
---|---|
Difficulty level | Easy |
Root privileges | No |
Requirements | Linux cron |
Est. reading time | 2 minutes |
Linux execute cron job after system reboot
The crontab command maintains crontab files for individual users. One can install or remove cron jobs as per needs.
Running job at startup (boot time)
You need to use special string called @reboot . It will run once, at startup after Linux reboot command. The syntax is as follows:
This is an easy way to give your users the ability to run a shell script or command at boot time without root access. First, run crontab command:
$ crontab -e
OR
# crontab -e -u UserName
# crontab -e -u vivek
Run a script called /home/vivek/bin/installnetkit.sh
@reboot /home/vivek/bin/installnetkit.sh
It i a super-simple way to run scripts on boot using cron jobs.
How to run a cron job automatically after server reboot
Say your script needs to be run only after 5 minutes. For example: reboot + 5mintues. The syntax is as follows:
@reboot sleep 300 && /home/wwwjobs/clean-static-cache.sh
The sleep command to add delay for a specified amount of time. In this example, 600 seconds and after that time clean-static-cache.sh gets executed at boot time.
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Start crond automatically at boot time
You also need to enable crond service via sys v / BSD init style system. Under RHEL / CentOS / Fedora, you need to use chkconfig (ntsysv) command to enable crond on boot:
# chkconfig crond on
## Commands to start/stop/restart crond for Linux Execute Cron Job ###
# service crond restart
# service crond start
# service crond stop
Under Debian / Ubuntu Linux use update-rc.d as follows to turn on service on boot:
# update-rc.d cron defaults
If you are using modern distro with systemd, try the following systemctl command # systemctl enable crond.service
### this to start/stop/restart crond on systemd enabled distro such centos 7.x/debian/ubutnu/arch ###
# systemctl start crond.service
# systemctl stop crond.service
# systemctl restart crond.service
# systemctl status crond.service
For Debian/Ubuntu Linux with systemd, try:
$ sudo systemctl enable cron.service
$ sudo systemctl start cron.service
$ sudo systemctl stop cron.service
$ sudo systemctl restart cron.service
$ sudo systemctl status cron.service
Save and close the file. For further information read out tutorial on cron jobs.
Getting push notification when the Linux system comes online
Specific jobs at AWS need working ssh to replicate cluster config and TLS file replication done using hooks. To keep it simple, Nginx would use ssh to send TLS files to all cluster nodes. However, this fails if the server rebooted for a kernel update. Hence, the developer and sysadmin need to log in manually into the box and add ssh keys using a keychain script. My cron job:
@reboot /efs/scripts/push-reboot-notification
Sample /efs/scripts/push-reboot-notification that push/send message to iOS and Android from Linux CLI script:
Источник
Как настроить Cron планировщик задач linux.
Cron самый популярный планировщик задач в Linux системах.
Каждый администратор Linux так или иначе прибегает к работе с cron, будеь это перезапуск какого-нибудь сервиса в определенное время или например запуск скрипта ежедневный.
Нам нужно добавить задачу в Cron,но для начала мы можем увидеть какие текущие задачи в нем есть командой:
Если мы получаем подобный ответ:
Что же делать.
Это значит у нас не установлен cron, что мы легко исправим следующими командами:
Install Crontab для Centos:
Install Crontab для Ubuntu/Debian:
Закончили установку.
Для примера будем придумывать себе задания, которые попробуем решить с помощью планировщика заданий Cron.
Также на понадобится конкретное действие , которые мы будем исполнять, например:
1. команду service nginx restart, которая перезапускает службу веб-сервера nginx.
2. запуск скрипта /scripts/script-ithelp21.sh
Начнем с того, что есть два варианта добавления заданий в cron:
1. Через редактирование файла /etc/crontab
2. Через команду crontab -etc/crontab -etc/crontab
Открываем редактор cron командой:
crontab -e
Задания добавляются в виде строк:
перезагружает веб-сервер и запускает скрипт каждую минуту.
Слева направо ознакомимся с значением *, которые она может принимать.
Каждая звездочка это возможное место для цифры:
И на основе данной информации пройдемся по возможным примерам.
#Как запустить команду с одинаковым промежутком времени.
#В данном примере сервис nginx будет перезапуск каждые 5 минут, а скрипт запускается в 42 минуты каждого часа.
#Как запустить команду в определенное время.
Nginx будет перезапуск ежедневно ровно в 2 часа ночи, а скрипт запускаться будет каждую среду в 16-30.
#Перезапускаем веб-сервер в 2 часа 5 минут каждое 15 число месяца.
#Запускаем скрипт с понедельника по пятницу в 15-00:
#Запускаем скрипт каждые три часа в 0 минут
Есть еще вариант использовать немного другой формат планировщика задач в виде:
Например, команды будут выполнять одинаковый функционал:
Источник
Настройка Cron
Системным администраторам, да и обычным пользователям часто приходится автоматизировать различные задачи по обслуживанию и работе с Linux с помощью скриптов. Это очень удобно, вы просто запускаете скрипт, и он делает все что необходимо без вашего вмешательства. Следующий шаг в этом пути — настроить автоматически запуск нужного скрипта в нужное время.
Именно для этих задач в Linux используется системный сервис cron. Это планировщик, который позволяет выполнять нужные вам скрипты раз в час, раз в день, неделю или месяц, а также в любое заданное вами время или через любой интервал. Программа часто используется даже другими службами операционной системы. В этой статье мы рассмотрим как выполняется настройка Cron и разберем основные часто используемые примеры.
Как работает Cron?
Фактически, Cron — это сервис, как и большинство других сервисов Linux, он запускается при старте системы и работает в фоновом режиме. Его основная задача выполнять нужные процессы в нужное время. Существует несколько конфигурационных файлов, из которых он берет информацию о том что и когда нужно выполнять. Сервис открывает файл /etc/crontab, в котором указаны все нужные данные. Часто, в современных дистрибутивах там прописан запуск утилиты run-parts, которая запускает нужные скрипты из следующих папок:
- /etc/cron.minutely — каждую минуту;
- /etc/cron.hourly — каждый час;
- /etc/cron.daily — каждый день;
- /etc/cron.weekly — каждую неделю;
- /etc/cron.monthly — каждый месяц.
В этих папках должны находиться скрипты, которые нужно выполнять с указанным интервалом. Скрипты должны иметь права на выполнение и их имя не должно содержать точки. Это очень сильно облегчает работу с планировщиком для новых пользователей. Также в файле crontab прописан запуск команды anacron, которая работает так же как и cron, только предназначена для задач, которые нужно выполнять раз в длительный период, например, раз в день, неделю, месяц, год.
Она позволяет выполнять их даже если компьютер работает не всегда и время от времени выключается. Дата выполнения задания последний раз записывается в файл /var/spool/anacron, а затем, при следующем запуске anacron проверяет был ли запущен нужный процесс в нужное время, и если нет, то запускает его. Сам же сервис cron больше рассчитан на выполнение задач в течение дня или с точно расписанным временем и датой.
Настройка Cron
Для настройки времени, даты и интервала когда нужно выполнять задание используется специальный синтаксис файла cron и специальная команда. Конечно, вы всегда можете отредактировать файл /etc/crontab, но этого делать не рекомендуется. Вместо этого, есть команда crontab:
Ее всегда желательно выполнять с опцией -e, тогда для редактирования правил будет использован ваш текстовый редактор по умолчанию. Команда открывает вам временный файл, в котором уже представлены все текущие правила cron и вы можете добавить новые. После завершения работы команды cron файл будет обработан и все правила будут добавлены в /var/spool/cron/crontabs/имя_пользователя причем добавленные процессы будут запускаться именно от того пользователя, от которого вы их добавляли.
Поэтому тут нужно быть аккуратным, и если вам нужно выполнять скрипты от рута, то и crontab нужно выполнить от рута, а не от пользователя. Это часто становится причиной проблем.
Синтаксис crontab
Как я уже говорил, время задается особым синтаксисом, давайте рассмотрим синтаксис настройки одной задачи cron:
минута час день месяц день_недели /путь/к/исполняемому/файлу
Нужно сказать, что обязательно нужно писать полный путь к команде, потому что для команд, запускаемых от имени cron переменная среды PATH будет отличаться, и сервис просто не сможет найти вашу команду. Это вторая самая распространенная причина проблем с Cron. Дата и время указываются с помощью цифр или символа ‘*’. Этот символ означает, что нужно выполнять каждый раз, если в первом поле — то каждую минуту и так далее. Ну а теперь перейдем к примерам.
Примеры настройки cron
Сначала можно посмотреть задачи cron для суперпользователя, для этого можно воспользоваться опцией -l:
Вы можете удалить все существующие задачи командой -r:
Давайте предположим, что нам нужно запускать от имени суперпользователя наш скрипт по адресу /usr/local/bin/serve. Какой-нибудь обслуживающий скрипт. Самый простой пример — запускать его каждую минуту:
Далее, усложним, будем запускать каждый час, в нулевую минуту:
Запускаем в нулевую минуту нулевого часа, каждый день, это в 12 ночи:
0 0 * * * /usr/local/bin/serve
Если идти так дальше, то можно запускать в первый день каждого месяца:
0 0 1 * * /usr/local/bin/serve
Можно в любой день, например, 15 числа:
0 0 15 * * /usr/local/bin/serve
В первый день недели первого месяца года, 0 часов 0 минут:
0 0 * 1 0 /usr/local/bin/serve
Или в нулевой день недели каждого месяца:
0 0 * * 0 /usr/local/bin/serve
Вы можете выбрать любую минуту, час и день недели, например, 15.30 во вторник:
30 15 * * 2 /usr/local/bin/serve
Понедельник считается первым днем, воскресенье — это седьмой или нулевой день. Еще можно писать сокращенное название дня недели, например sun — воскресенье:
30 15 * * sun /usr/local/bin/serve
Для того чтобы указать определенный интервал нужно использовать символ «-«, например, каждый час, с семи утра до семи вечера:
0 7-19 * * * /usr/local/bin/serve
Если нужно запустить команду несколько раз, можно использовать разделитель «,». Например, запустим скрипт в 5 и 35 минут пятого (16:05 и 16:35), каждый день:
5,35 16 * * * /usr/local/bin/serve
Вы можете захотеть не указывать отдельно время, а просто указать интервал, с которым нужно запускать скрипт, например, раз в 10 минут. Для этого используется разделитель косая черта — «/»:
Кроме того, для некоторых часто используемых наборов были придуманы переменные, вот они:
- @reboot — при загрузке, только один раз;
- @yearly, @annually — раз год;
- @monthly — раз в месяц;
- @weekly — раз в неделю;
- @daily, @midnight — каждый день;
- @hourly — каждый час.
Например, вот так просто будет выглядеть команда запуска скрипта раз в час:
Если же вы собрались добавить скрипт в одну из папок, то, как я уже говорил, нужно чтобы его имя было без точек и у него были права на выполнение:
sudo vi /etc/corn.daily/basckup
Скрипт должен выглядеть подобным образом. Теперь вы знаете как настроить cron, осталось проверить как все работает.
Отладка работы
После того как вы настроили правила, еще хотелось бы проверить работают ли они. Для этого ждем того времени, когда скрипт уже должен быть выполнен и смотрим лог cron. Иногда он находится в /var/log/cron, а иногда пишется в syslog. Например, у меня в crontab есть такая строка:
Она должна выполняться в 19.40 каждый день, теперь смотрим лог:
grep CRON /var/log/syslog
И видим что в нашем логе она действительно есть и выполняется целиком успешно. Если бы были какие-либо ошибки, то тут же было бы выведено сообщение.
Если нужно проверить скрипт, который находится в одной из специализированных папок, то тут еще проще, просто запустите run-paths, передав ей в параметр нужную папку или даже сам скрипт:
sudo run-paths /etc/cron.daily/
Дальше вы увидите весь вывод, включая вывод скрипта и сможете быстро понять в чем проблема.
Выводы
В этой статье мы рассмотрели как выполняется настройка cron для удобного планирования автоматических задач. Надеюсь, эта информация была полезной для вас.
Источник