Frontoil.ru

Авто Масла
9 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Post navigation

Синхронизация времени ubuntu cron

Если у Вас появилась необходимость запускать на ПК/сервере с Linux определенные команды или скрипты через равный промежуток времени или в назначенное время, то на помощь приходит Crontab! Это планировщик заданий (или менеджер, как больше нравится). Таким образом можно запускать задания резервного копирования, синхронизации, обновления, обслуживания системы и многое другое.

Синхронизация времени с NTP в Linux

В каждой операционной системе есть свой метод поддержания точного времени машины в соответствии с часовым поясом. В Linux работу по поддержанию точного времени вашего компьютера выполняет Chrony. Chrony — это сетевой протокол времени для Debian, Red Hat, Arch и других дистрибутивов Linux, который может синхронизировать время по сетевому протоколу.

У Chrony есть демон, который незаметно работает на вашем компьютере с Linux. Разработчики программного обеспечения Red Hat создали Chrony; сейчас он широко используется во всех операционных системах на базе Linux. Он написан на языке программирования C и имеет лицензию конфиденциальности GNU. Этот пост покажет вам, как синхронизировать время с NTP в Linux с помощью инструмента Chrony (NTP).

Шаг 1. Установите Chrony в Linux

Самый первый шаг — установка Chrony в Linux. Его легко установить на Debian, Red Hat, серверах и других дистрибутивах Linux из официального репозитория Linux. Если вы являетесь пользователем Debian / Ubuntu Linux, вы можете запустить следующую команду aptitude, указанную ниже, чтобы установить Chrony в вашей системе.

Если вы являетесь пользователем Red Hat или Fedora Linux, вы можете установить Chrony, выполнив следующую команду DNF или YUM в оболочке терминала.

Установите Chrony в Red Hat Linux

Установите Chrony в Fedora Linux

После успешной установки Chrony на вашем компьютере с Linux теперь вы можете включить его и проверить статус Chrony на вашем компьютере. Выполните следующие команды управления системой в хронологическом порядке в терминальной оболочке Linux, чтобы включить и увидеть состояние системы.

Вы также можете выполнить следующую команду, чтобы проверить активность Chrony на вашем компьютере с Linux.

Читайте так же:
Карбюратор солекс регулировка количества оборотов

Шаг 2. Отслеживайте параметры Chrony в Linux

После установки инструмента Chrony на вашем Linux теперь вы можете отслеживать режим источника, состояние источника, IP-адрес, частоту дискретизации NTP из оболочки терминала. Выполните следующую команду в оболочке терминала с правами root, чтобы проверить параметры Chrony.

Вы также можете запустить следующую команду sourcestats в оболочке терминала, чтобы отслеживать количество точек выборки, частоту, сетевой IP-адрес, адрес сервера NTP и другую подробную информацию о сервере NTP на вашем компьютере Linux.

Шаг 3. Настройте Chrony для синхронизации времени

Chrony запускает в системе демон для автоматической синхронизации времени в системе Linux через сервер NTP. Вы можете найти сценарий конфигурации Chrony в файле /etc/chrony/chrony.conf. Чтобы отредактировать и настроить конфигурацию Chrony, вы можете запустить следующую команду в оболочке терминала. Здесь я использую редактор сценариев Nano для редактирования сценария конфигурации Chrony; вы также можете использовать другие редакторы.

Обычно NTP использует пакетный сервер пула 0.pool.ntp.org для синхронизации времени с NTP в Linux. Но вы можете добавить следующие адреса серверов NTP в сценарий конфигурации для синхронизации времени с NTP в Linux.

После настройки адресов NTP-серверов в вашей системе Linux не забудьте перезапустить службы Chrony на вашем компьютере. Выполните следующую команду управления системой, чтобы перезапустить демон Chrony на вашем компьютере с Linux.

Шаг 4. Отслеживайте время с помощью Chrony

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

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

Наконец, запустите следующую команду timedatectl в оболочке терминала, чтобы отобразить текущее местное время, всемирное время, время RTC, часовой пояс и статус сервера NTP на вашем компьютере с Linux.

Настройка cron для системных администраторов

Фактически, Cron — это сервис, как и большинство других сервисов Linux, он запускается при старте системы и работает в фоновом режиме. Его основная задача выполнять нужные процессы в нужное время. Существует несколько конфигурационных файлов, из которых он берет информацию о том что и когда нужно выполнять. Сервис открывает файл /etc/crontab (тут могут быть тоже прописаны задачи) и они не будут отображаться по команде crontab – l

Читайте так же:
Как регулировать передние дисковые тормоза на велосипеде

Так же существует anacron (anachronistic cron или асинхронный (анахроничный) cron) и его запуск и его задания тоже нужно учитывать, см. файл /etc/anacrontab и каталоги /etc/cron.daily/, /etc/cron.hourly/, /etc/cron.monthly/ и /etc/cron.weekly/

Часто, в современных дистрибутивах там прописан запуск утилиты run-parts, которая запускает нужные скрипты из следующих папок:

§ /etc/cron.minutely — каждую минуту;

§ /etc/cron.hourly — каждый час; ( cat /etc/cron.d/0hourly — тут настроен)

§ /etc/cron.daily — каждый день;

§ /etc/cron.weekly — каждую неделю;

§ /etc/cron.monthly — каждый месяц.

Список всех задач cron у всех пользователей в Linux

1. /etc/crontab (можно посмотреть глазами cat /etc/crontab)

2. Клиентский crontab ( crontab -u user -l)

3. /etc/anacrontab (можно посмотреть глазами cat /etc/anacrontab)

4. /etc/cron.d/ (Кроме того, cron считывает файлы в каталоге /etc/cron.d/)

5. /etc/cron.daily/ Запуск всех скриптов один раз в день

6. /etc/cron.hourly/ Запуск всех скриптов один раз в час

7. /etc/cron.monthly/ Запуск всех скриптов один раз в месяц

8. /etc/cron.weekly/ Запуск всех скриптов один раз в неделю

Для того чтобы пройти руками все клиентские Клиентский crontab ( crontab -u user -l), можно автоматизировать для всех пользователей очевидно нужно взять список пользователей в системе из /etc/passwd и сделать для каждого пользователя crontab -u USERNAME -l, то есть:

for user in $( cut -d ‘:’ -f1 /etc/ passwd ); do crontab -u $user -l; done

Недостаток этого решения очевиден:
1. Нужно всегда помнить эту команду.
2. Если у пользователя нет задач в планировщике то мы получим сообщение «no crontab for vasua» и таких сообщений может быть десятки если у вас много пользователей — это неудобно.
3. Вывод информации неудобно читать.

Читайте так же:
Как отрегулировать ремень на снегоуборщике

Решение простое — создадим функцию allcrontab в файле

/.bashrc для ввода информации в более удобном виде:

# Определим цвета вывода

red= ‘e[0;31m’

RED= ‘e[1;31m’

green= ‘e[0;32m’

GREEN= ‘e[1;32m’

NC= ‘e[0m’
# Определим нашу функцию вывода списка всех задач cron у всех пользователей

function allcrontab() <

for user in $( cut -d ‘:’ -f1 /etc/ passwd ); do

usercrontab=$( crontab -l -u $ 2>/dev/null)

if [ -n «$» ]; then

echo -e «$====== Start crontab for user $$$$ $======$«

crontab -l -u $ | sed ‘/ *#/d; /^ *$/d’

echo -e «$====== End crontab for user $$$$ $========$

fi

done

>

/.bashrc или перелогиниваемся и выполняем в консоле allcrontab и видим красивый вывод списка всех задач cron у всех пользователей:

Но это не финишная прямая, а только начало, ведь опытный системный администратор знает, что кроме вывода списка заданий командой crontab -l -u USER есть еще задания планировщика в каталоге /etc/cron.d/ и это тоже нужно учитывать, потому что например панель хостинга ISPConfig сохраняет задания cron в каталоге /etc/cron.d/ с именами ispc_webXXX, где webXXX — это логин системного пользователя, например web30 и вывод crontab -l -u web30 нам скажет «no crontab for web30», а на самом деле в файле /etc/cron.d/ispc_web30 может быть такая картина:

SHELL= ‘/bin/sh’
*/2 * * * * web30 /usr/bin/php -f /var/www/mysite.ru/web/yii cron -origin/index

ОТЛАДКА РАБОТЫ cron

После того как вы настроили правила, еще хотелось бы проверить работают ли они. Для этого ждем того времени, когда скрипт уже должен быть выполнен и смотрим лог cron. Обычно он находится в /var/log/cron

Если нужно проверить скрипт, который находится в одной из специализированных папок, то тут еще проще, просто запустите run-paths, передав ей в параметр нужную папку или даже сам скрипт:

Настройка Cron для запуска PHP-скрипта

В некоторых случаях бывает так, что автоматическое выполнение PHP-скрипта невозможно. Чаще всего подобные ошибки случаются при запуске PHP-скрипта через локальный интерпретатор. В таких случаях требуется запустить Cron вручную, для чего лучше всего использовать программу wget. В приведенном ниже примере «example.com» нужно заменить на реальный путь к вашему PHP-файлу.

Полезные примеры

Разберем уже приведенный выше пример, немного изменив параметры:

Запуск PHP-скрипта будет происходить в 7:00 и 19:00 каждого воскресенья и 3 числа каждого месяца (совпадения дня недели и числа не имеют значения).

/dev/null/2>&1 — эта команда Cron добавляется в конце сценария (строки), для выполнения скрипта в фоновом режиме без уведомлений.

Помимо этого, можно добавлять другие полезные опции в конце строки планировщика Cron. Как например, для отладки запускаемого скрипта, нужен лог-файл выполнений.

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

Просмотрев такой лог, можно понять причину, почему Cron не выполняет скрипт.

Если добавленное в CRON задание не выполняется, можно проверить ошибки в логах.

Скрипт лежит в папке my_scripts и называется backup_webdav_day.sh. Для просмотра логов CRON

По умолчанию он имеет такой вид:

Команда означает, что скрипт будет запускаться в 2 часа каждую ночь.

Предположим, что выполнение команды не работает, нам нужно понять, почему так происходит. Изменяем в файле backup_webdav_day.sh данные скрипта, чтобы тот записывал ход выполнения работы в специальный лог файл, который будет создан в той же директории. И меняем время на ближайшее, допустим сейчас 16.00 и мы хотим узнать, будет ли работать скрипт. Тогда делаем его выполнение через 5 минут.

Ждём пока не наступит 16.05, а затем смотрим что показывает файл backup_webdav_day.log.

Мастер заданий

С помощью мастера заданий вы легко сможете настроить время выполнения скриптов и произвольных команд.

Сначала выберите тип выполняемой операции:

  • Произвольная команда;
  • PHP-скрипт версий 5.2-7.4;
  • Запрос по протоколу HTTP
  • Запрос по протоколу HTTPS
  • Perl-скрипт;
  • Bash-скрипт.

После указания нужного типа операции нужно указать путь к исполняемому скрипту или вписать команду вручную. Для быстрого и удобного указания путей к PHP-, Perl- и Bash-скриптам вы можете воспользоваться проводником , расположенным рядом с кнопкой .

Когда нужный скрипт будет выбран вы можете нажать на кнопку и проверить работоспособность скрипта. Вам будет выведено окно с логом работы скрипта следующего вида:

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

После проверки кода на работоспособность можно приступать к настройке временных опций исполнения скрипта. Crontab предлагает настройки для 4 временных групп: минут, часов, дней, месяцев. При нажатии на каждую группу раскрываются опции настройки, как это показано на скриншоте:

После настройки временных опций и нажатия на кнопку Добавить задание, под основным окном Cron появится запись с вашей конфигурацией. Количество таких записей не ограничено.

Задание можно включить/выключить, изменить или удалить с помощью кнопок, расположенных справа, напротив каждого из заданий:

— включить/выключить задание;

— изменить задание;

— удалить задание.

For more information about cron, you can also check the man pages with:

If it is difficult for you to set up correct cron jobs at the beginning, you can use some cron job calculator to generate the cron job expression. There are several good cron job calculators available on the Internet.

See Also: CentOS Crontab

crontab in ubuntuOf course, you don’t have to use Ubuntu crontab if you use one of our fully-managed Ubuntu hosting, in which case you can simply ask our expert Linux admins to help you with crontab on Ubuntu to automate system tasks. They are available 24×7 and will schedule any system tasks using crontab on your Ubuntu server, immediately!

PS. If you liked this post on Ubuntu crontab and how to automate system tasks, please share it with your friends on the social networks using the buttons on the left or simply leave a reply below. Thanks

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector