Centos 7 cron перезапуск

Обновлено: 30.06.2024

На сервере установлен CentOS release 6.7 (Final). С Linux я сталкиваюсь впервые, познаний ноль. Все на уровне "гуголь" и логики. Поэтому, прошу совета:

Задача банальна: необходима перезагрузка сервера ежедневно в 07:00.

Сделано:
1. Создал скрипт по пути


2. Сделал shoutdown.sh исполняемым
3. В shoutdown.sh прописал скрипт

Что пробовал:
1. Не смог разобраться, где посмотреть лог работы сервера, поставил ip на пинг на ночь. Пакетов потерянных не было, следовательно сервер не перезагружался.
2. Вручную запустил скрипт командой


Сервер ушел в ребут. Т.е. скрипт рабочий. Значит проблема в cron.
3. Нашел лог cron. В нем напоминание о скрипте в 07:00:01 имеется

4. Команда crontab -l показывает мою команду.
5. При вводе crontab -e вижу это:

Что я делаю не так?
  • Вопрос задан более трёх лет назад
  • 5021 просмотр

Оценить 4 комментария

p1r4te

Если cron не работает, смотри у него в логе, почему он не работает.

Rsa97

Для правильного вопроса надо знать половину ответа

Rsa97

Rsa97

fuzzZy23: И ещё надо скрипту поставить разрешение на выполнение. chmod 744 /etc/scritpts/shoutdown.sh Rsa97: а по поводу:
chmod 744 /etc/scritpts/shoutdown.sh
я уже сделал файл исполнимым
-rwxr-xr-x

Rsa97

Rsa97: Ну и ещё, команду /sbin/shutdown -r now можно крону прописать и без промежуточных скриптов. Rsa97: ну и я, великий англичанин, писал путь /etc/scripts/shOutdown.sh
Думаю, в этом тоже могла быть причина :DDD

Rsa97

fuzzZy23: Да. Только путь может быть разным в зависимости от сборки линукса. Проверить можно командой which shutdown , она покажет точный путь.

p1r4te

Добрый день. У вас опечатка в скрипте (shOutdown). Попробуйте:

Добрый день. Да, я только что заметил эту опечатку, поправил.

Так же, в скрипте, вместо
shutdown -r now
прописал как у вас
shutdown -r 0

Все операции, который вы прописали, мне понятны.

Есть только 2 вопроса:
1. принципиально важно класть файл скрипта к юзеру в /home/username/ ?
2. когда я пытаюсь редактировать cron командой "crontab -e" - у меня перестает что-либо печататься в консоли. В комментарии скриншот приложить нельзя. Добавил в основную тему сверху

Нужно ли перезапускать cron после изменения файла crontable?

Не стоит пренебрегать ответом @ leonbloy, но я обнаружил, что реализация первого задания cron моего linux (с правильно отформатированным заданием в минуту) не работало до перезагрузки системы. sudo service cron restart не был проверен @geotheory yikes Надеюсь, мне не придется перезагружать мой prod-сервер каждый раз, когда я обновляю свой crontab (а я нет).

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

Но если вы просто хотите убедиться, что все сделано,

При использовании папки cron.d символические ссылки crontabs не будут перезагружены. Как я могу принудительно перезагрузить? Ах, это так просто. Это сейчас sudo service cron restart . Лучший вариант - перезагрузить - он может быть инициирован пользователем без /etc/init.d/cron reload Единственная проблема с этим ответом состоит в том, что это не всегда верно. Посмотрите комментарий геотеории под вопросом. Я тоже был немного об этом. Я внес изменение в файл crontab через sudo crontab -e , сохранил его Ctrl + X и ушел, предполагая, cron что его заберут (из-за того, что за этот ответ так высоко проголосовали). Через несколько дней мой клиент сообщает, что cron все еще работает в старом цикле. Так что - честно - если вы хотите быть в безопасности - просто перезапустите cron систему или систему, и не тратьте время на потраченное время на тестирование, что вам придется сделать, несмотря на этот высоко оцененный ответ.

На CentOS с cPanel sudo /etc/init.d/crond reload делает свое дело.

На CentOS7: sudo systemctl start crond.service

// Чтобы перезагрузить crond , а не просто запустить его на все более ужасном systemd, запустите sudo systemctl reload crond.service . @NathanBasanese Перезагрузка cron в SystemD теперь считается черной магией: sudo systemctl reload crond не работает с Failed to reload cron.service: Job type reload is not applicable for unit cron.service. (Ubuntu 18.04). Читайте: Голова, мы все разбиты синдромом: "SystemD, может быть только один". Если перезагрузка не происходит автоматически за кулисами, вы обанкротились! Даже не думайте об исправлении, как вы это делали последние 3 (или больше) десятилетия! Читайте: Мир Windows наконец-то поглотил Debian: Если у вас под капотом что-то странное, что вы будете делать? Запустить снова! Перезагрузка - это больше, чем просто перезагрузка. Разве нет чистой перезагрузки для Centos?

У меня была похожая проблема на 16.04 VPS Digital Ocean. Если вы меняете crontabs, обязательно запустите

Я вижу только reload достаточно. Нет необходимости restart . Спасибо. :)

В зависимости от дистрибутива использование «перезагрузки cron» может ничего не делать. Чтобы вставить фрагмент из файла init.d / cron (debian squeeze):

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

date

21.04.2020

directory

CentOS, Linux

comments

Комментариев пока нет

Cron — это планировщик задач, работающий в Unix-подобных операционных системах, включая все дистрибутивы Linux. Демон cron работает на сервере в фоновом режиме и запускает по расписанию запланированные задачи. В этой статье мы рассмотрим установку cron на сервер с Linux CentOS 8, познакомимся с синтаксисом cron, научимся добавлять в него различные задачи, управлять расписанием запуска.

Установка cron в Linux

По умолчанию cron доступен при установке CentOS 8. Если же у вас по каким-то причинам он отсутствует, вы можете установить его из базового репозитория с помощью yum / dnf:

В моем случае cron уже был установлен:

установка crontab в linux centos

После установки, демон crond нужно добавить в автозагрузку и запустить:

Crontab: добавление задания в планировщик cron

Для добавления задач в cron можно использовать команду:

Данная команда откроет файл для задач для вашего пользователя в текстовом редакторе по-умолчанию (у меня это vi, но можно изменить на удобный для вас, например nano). Настройка заданий таким способом исключает, что вы допустите ошибку в синтаксисе. Редактор crontab просто не даст сохранить файл с ошибками.

Также можно отредактировать файл заданий cron вручную через mc:

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

Теперь добавьте расписание задания и путь к файлу скрипта:

Сохраните файл (редактирование файла по аналогии с редактором vim: сохранить Ctrl+O и выйти Ctrl+x).

Если все сделали верно, ваше задание будет добавлено. Чтобы вывести список заданий cron, выполните:

Данный скрипт будет запускаться через cron ежеминутно.

Минимальное время – 1 минута. Демон cron просматривает список заданий один раз в минуту. Просматриваются следующие файлы и каталог:

Каждая запись расписания crontab состоит из 5 полей:

cron синтаксис команды, настройка расписания

Можно использовать следующие допустимые значения для каждого из полей:

ПолеДиапазон значений
минуты 0-59
часы 0-23
день месяца 1-31
месяц 1-12 или jan feb mar apr may jun jul aug sep oct nov dec
день недели 0-6 (где 0 это воскресение) или sun mon tue wed thu fri sat

Знак * означает все допустимые значения. Пример задания:

Указанный в задании скрипт, будет запускаться каждый понедельник в 00 часов 15 минут. Для упрощения синтаксиса cron-файла используют специальные символы:

Запятая (,) : запятой разбиваются значения расписания для выполнения одинаковой задачи, но в разное время. Например, если вам нужно выполнять задачу в 15 и 30 минут, вы можете задать расписание так:

Или исползовать более короткий синтаксис с запятой:

Слеш (/) : использовать косую черту можно для выражения какого-либо шага. Например, вам нужно запускать какую-то задачу каждые 2 часа. В обычном написании файл cron будет громоздким, используя / вы заметно сократите содержимое cron файл:

* */2 * * *
Дефис (-) : дефис указывает диапазон значений в поле. Если вы хотите запускать задание первые 10 минут или последние 10 минут, укажите диапазон через дефис:

Еще несколько примеров расписаний для cron:

  • запуск по будням в 12:00 и 18:00: 0 12,18 * * 1-5
  • каждые 30 минут: */30 * * * *
  • каждую субботу: 0 0 * * 6
  • каждый вторник и четверг в 2:00 ночи: 0 2 * * 2,4

Еще в cron можно использовать специальные переменные.

Т.е. для запуска задания раз в день можно использовать формат:

@daily echo "Проверка cron"

Можно отредактировать cron файл другого пользователя:

Отправка уведомлений cron на e-mail

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

Для отправки почты на сервере дожен быть установлен почтовый-агент. Для теста, я установил на сервер sendmail:

sendmail – бесплатный агент для передачи почты, который доступен практически для любой операционной системе.

Настроем параметры отправки e-mail в cron-файле. Добавьте в файл следующие строки:

cron - почтовые уведомления email, mailto

После каждого запуска задачи на указанный email отправляется уведомление:

письмо о задании отправлено через crontab

Информацию о запуске задания cron можно сохранять в лог-файл. Для этого, в конце задания нужно добавить >> и указать путь до лог-файла:

* * * * * echo "Проверка cron" >> /var/log/admin/journal.log

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

* * * * * echo "Проверка cron" >> /dev/null 2>&1

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

Файлы конфигурации и логи планировщика cron

  • /etc/cron.daily – запуск скриптов один раз в день
  • /etc/cron.hourly – запуск скриптов ежечасно
  • /etc/cron.monthly – запуск скриптов раз в месяц
  • /etc/cron.weekly – запуск скриптов раз в неделю

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

Можно ограничить доступ к планировщику с помощью файлов /etc/cron.allow и /etc/cron.deny. Достаточно создать эти файлы и добавить в него пользователей, которым, соотвественно, разрешено и запрещено запускать задания cron.

В файл /etc/crontab тоже можно помещать задания. Обычно данный файл используется root пользователем или для настройки системных задач. Личные файлы пользователей для cron заданий, хранятся в директории /var/spool/cron/ или /var/cron/tabs/.

Чтобы отследить выполнение задач или отследить ошибки, можно обратиться к лог-файлу /var/log/cron. В данном файле фиксируется запуск всех задач и ошибки в работе демона, если они есть:

Подскажите пожалуйста, как с помощью Crontab делать рестарт сервера (Cent OS), например, каждые сутки?

Для проверки я пытался перезапускать сервер в определенное время, например в 18 часов 10 минут.
Пытался так:

Однако рестарт не осуществляется.

Подскажите пожалуйста, в чём может быть проблема?

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь


Среднеквадратическое отклонение за каждые сутки
Здравствуйте! Помогите, пожалуйста, создать функцию. Имеется массив записанных данных (долгота).

Изменение даты каждые сутки
Интересует вопрос.Возможно ли сделать так,чтобы текст на сайте менялся каждые сутки,а точнее даты.

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

Каждые сутки отображать в TextBox разный текст
Есть windows Form app. Суть его в том, что каждый день в текстбоксе появляется новый вопрос(из.

такой вариант работает (главное, путь должен быть полный, либо переменная PATH вверху установлена)

спасибо за ответ accept, однако я до конца что-то не понял.

объясните пожалуйста поподробней, что здесь имеется в виду?

(главное, путь должен быть полный, либо переменная PATH вверху установлена) объясните пожалуйста поподробней, что здесь имеется в виду?

если у тебя команда с неполным путём - shutdown вместо /sbin/shutdown, - то вверху должна быть определена переменная PATH, включающая путь, по которому находится shutdown - /sbin

1) под обычным пользователем запусти

2) если перезагрузка произошла, под этим же пользователем
2.1) удостоверься в пути
:wq
2.4) жди выполнения
2.5) если ничего не произошло, выполни

спасибо за очередной ответ ))

Может быть я что-то не так понял.

Вообщем, под обычным пользователем отказался перезагружаться "требует root"

подождал несколько минут и всё равно ничего не происходит.

показало вот такое:

по идее такая запись не катит если воспользоваться подождал несколько минут и всё равно ничего не происходит

это ты во сколько делал ?
нужно посмотреть текущие минуты на часах и сделать на минуту вперёд

показало, что вообще не выполнилось, то есть, скорее всего, ты не дождался Тема не свежая, но задался целью сделать рестарт сервера раз в неделю на VDS, зашел просто в "Планировщик" в ISPManager 5, ввёл Выбрал "еженедельно", в субботу в 4:00, проверил - работает.
У меня CentOS 6

Строка таблицы mysql меняется каждые сутки
Знающие, опытные и любители))) Как силами Mysql запросов организовать на сайте изменение в базе.

Кнопка, которая будет делать рестарт MS SQL Serverа.
Незнаю, в какую точно тему вопрос. Мне нужно сделать на вэб-странице кнопочку, которая будет.

Рассчитать среднее значение пробега автомобиля по всему предприятию за каждые сутки месяца
На основе сведений о ежедневном пробеге автомобилей транспортного управления рассчитать среднее.


Рассчитать среднее значение пробега автомобиля по всему предприятию за каждые сутки месяца
помогите пожалуйста с задачей " На основе сведений о ежедневном пробеге автомобилей транспортного.


Вычисление средней температуры за сутки, если температура измеряется каждые два часа
Заранее извиняюсь, что пишу сюда. Это от беспомощности, наверное) Вообщем завтра мне нужно сдать.

Читайте также: