Как мне настроить работу Cron?

Я хочу запланировать выполнение задачи на регулярной основе и слышал, что Cron — это способ сделать это.

Как мне добавить задания Cron в Ubuntu?


Поместите сценарий оболочки в одну из этих папок: /etc/cron.daily , /etc/cron.hourly , /etc/cron.monthly или /etc/cron.weekly .

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

  crontab -e  

Это откроет ваш личный crontab (файл конфигурации cron). Первая строка этого файла объясняет все! В каждой строке вы можете определить одну команду для запуска и ее расписание, и формат будет довольно простым, когда вы освоитесь. Структура такова:

  минутный час день месяца месяц день недели команда  

Для всех чисел, которые вы можно использовать списки, например 5,34,55 в поле минут будет означать запуск в 5 прошедших, 34 прошедших и 55 минут после любого заданного часа.

Также можно использовать интервалы . Они определены так: */20 . Этот пример означает каждое 20-е, поэтому в столбце минут это эквивалентно 0,20,40 .

Таким образом, чтобы запускать команду каждый понедельник в 5:30 днем:

  30 17 * * 1/path/to/command  

или каждые 15 минут

  */15 * * * */path/to/command  

Обратите внимание, что день недели идет от 0 до 6, где 0 — воскресенье.

Подробнее см. Здесь.


Если задание, которое вы хотите запустить, может быть запущено с теми же привилегиями, что и ваш пользователь. Я рекомендую использовать пользовательский crontab, который вы можете редактировать, запустив EDITOR = "gedit" crontab -e (который будет использовать gedit для отредактируйте файл crontab) или просто crontab -e (который будет использовать редактор по умолчанию) в терминале.

Если вы хотите запускать что-то каждые 10 минут, например, вы добавляете такую ​​строку

  */10 * * * */usr/bin/somedirectory/somecommand  

и сохраните файл.

Вы можете увидеть содержимое пользователя crontab с помощью crontab -l .

Чтобы добавить задание cron, которое запускается от имени root, вы можете отредактировать crontab root, запустив sudo crontab -e .

Самый гибкий способ — использовать системный crontab /etc/crontab , который вы можете редактировать только с правами суперпользователя. В этом файле пользователь должен запускать каждую команду, как указано, поэтому вы можете запускать свои команды от имени пользователя root (в случае, если вам нужен этот уровень привилегий) или любого другого пользователя в системе.

Например, если вы хотите запускать что-то каждые 10 минут как root, вы должны добавить такую ​​строку

  */10 * * * * root/usr/bin /somedirectory/somecommand  

(обратите внимание на добавление пользователя в строку)

Вы можете увидеть содержимое системного файла crontab с помощью cat/etc/crontab.

Подробнее на: https://help.ubuntu. com/community/CronHowto

1


Если вы предпочитаете делать это с помощью графического интерфейса, вы можете перейти в Центр программного обеспечения и установить Запланированные задачи (или запустить sudo apt-get install gnome-schedule код>). Он предоставит мощный графический интерфейс для добавления задач cron.

Обратите внимание, что если вы используете этот метод, задачи по умолчанию будут выполняться от имени вашего собственного пользователя, а не от имени пользователя root. Обычно это хорошо.

3


Я рекомендую планировщик задач KDE ( kde-config-cron ). Доступ к нему осуществляется из Системных настроек в модуле Планировщик заданий .

Он управляет как личными, так и системными Crontab, а также меня очень удивила легкость создания временных границ (см. скриншот ниже). Я думаю, что эта часть действительно недооценена.


Планировщик задач KDE не будет работать в обычном Ubuntu. Он работает только в системах KDE, таких как KUbuntu. Для систем, отличных от KDE, вы предпочтете использовать gnome-schedule

  $ sudo apt-get install gnome-schedule  

Приложение — это запланированные задачи в Dash.

2


Я хотел установить Задание Cron для запуска через сценарий bash, поэтому выполнение сценария добавит задание cron.

Я понял, что когда вы используете:

  crontab -e  

Затем он создает файл:

/var/spool/cron/crontabs/root

Где root — это имя пользователя, выполняющего команду crontab. Итак, исходя из этого и, по крайней мере, в версии 14.04, мы можем выполнить следующие команды bash для создания нового задания Cron:

  echo "30 17 * * 1/path/to/ command ">/var/spool/cron/crontabs/root  

Нам также необходимо установить правильное владение для файла:

  chown root: root/var/spool/cron/crontabs/root  

И установите правильные разрешения:

  chmod  600/var/spool/cron/crontabs/root  

Если при запуске crontab -e в списке уже есть задания Cron, тогда вы можете добавить его в список с помощью следующей команды:

  echo "30 17 * * 1/path/to/command" >>/var/spool/cron/crontabs /root  


Пример запуска скрипта test_cron.sh cron каждую минуту в Ubuntu 18. 04 с использованием символической ссылки:

test_cron.sh файл:

  #!/Bin/bashecho "Система  резервное копирование ">>/media/myname/data/backup/backup_tmp.log

Если вы хотите использовать переменные среды в своем скрипте, например $ USER в path лучше вводить точный путь, bash не узнает ваши переменные во время выполнения.

myname — это имя пользователя (часть корневой группы, я не уверен, что требуются привилегии root).

Разрешить пользователям для установки заданий cron при необходимости будет создан файл:

  sudo nano/etc/cron.allowrootmyname

Путь к сценарий /home/myname/shell/test_cron.sh

Я сменил владельца и сделал его исполняемым:

  sudo chown myname/home/myname/shell/test_cron.shchmod + x/home/myname/shell/test_cron.sh

Я добавил символическую ссылку:

  sudo ln -s/home/myname/shell/test_cron.sh/usr/bin/test_cron  

Зарегистрировано как myname Я добавил новую задачу для выполнения test_cron каждую минуту.

  crontab -e */1 * * * * test_cron  

Чтобы проверить, есть ли команда в списке:

  crontab -l */1 * * * * test_cron   

Чтобы проверить выполнение

  grep -i cron/var/log/syslogNov 17 12:28:01 myname-ubuntu CRON [139  47]: (myname) CMD (резервное копирование системы)  


Учитывая, что у вас есть несколько заданий cron с конкретным пользователем, и у них разное расписание. Вы можете просто создать файл в /etc/cron.d/ Допустим, имя файла — myjobs , затем просто запишите все ваши планировщики в этот файл и затем запустите следующая команда.

crontab -u /etc/cron.d/myjobs



Как проверить журналы cron в Ubuntu

Я зашел в /var/log/cron , но этот файл пусто.

Как проверить, включен ли crontab, работает правильно или нет в ubuntu

спасибо


Если вы хотите узнать, запущен ли он, вы можете сделать что-нибудь вроде sudo status cron или ps aux | grep cron .

Если вы хотите знать, выполняются ли ваши задания cron, проверьте /var/log/syslog с именем процесса cron. Например:

  26 апреля 21:17:01 пример CRON [18055]: (root) CMD (cd/&& run-parts --report/etc/cron.hourly  )  

  1. изменить rsyslog config: откройте /etc/rsyslog.d/50-default.conf , удалите # перед cron. *
  2. перезапустить службу rsyslog: sudo service rsyslog restart
  3. перезапустить службу cron: service перезапуск cron

теперь вы можете проверить журнал cron из файла /var/log/cron.log

4


По умолчанию журнал cron в Ubuntu находится в /var/ журнал/системный журнал . Используйте команду ниже, чтобы проверить записи cron в этом файле.

  grep cron/var/log/syslog  

1


Новая информация за 2020 год: cron теперь является службой systemctl, поэтому вы можете иметь журналы cron/anacron с помощью:

journalctl -u cron.service

если вы установили анакрон, это то же самое с:

journalctl -u anacron.service

(anacron is для настольных компьютеров, когда не гарантируется, что ваш компьютер всегда будет включен. Это требует, чтобы даже если ваш компьютер отключился на 5’00, ежедневные задания выполняются при запуске компьютера).

2

Оцените статью
clickpad.ru
Добавить комментарий