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

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

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

593
задан 18 August 2015 в 14:26

8 ответов

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

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

crontab -e

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

minute hour day-of-month month day-of-week command

Для всех чисел, которые вы можете использовать списки, например, 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 - воскресенье.

Вы можете прочитать больше здесь .

700
ответ дан 18 August 2015 в 14:26

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

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

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

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

Содержимое пользовательского кронтаба можно посмотреть с помощью кронтаба -l.

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

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

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

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

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

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

Больше подробностей на странице: https://help.ubuntu.com/community/CronHowto

106
ответ дан 18 August 2015 в 14:26

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

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

enter image description here

26
ответ дан 18 August 2015 в 14:26

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

test_cron.sh файл:

#!/bin/bash
echo "System backuped" >> /media/myname/data/backup/backup_tmp.log

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

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

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

sudo nano /etc/cron.allow

root
myname

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

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

sudo chown myname /home/myname/shell/test_cron.sh
chmod +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/syslog

Nov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)
3
ответ дан 18 August 2015 в 14:26

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

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

54
ответ дан 18 August 2015 в 14:26

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

$ sudo apt-get install gnome-schedule

В Dash.

12
ответ дан 18 August 2015 в 14:26

Я хотел настроить задание 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
11
ответ дан 18 August 2015 в 14:26

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

crontab -u <имя_пользователя> /etc/cron.d/myjobs

0
ответ дан 5 January 2021 в 23:59

Другие вопросы по тегам:

Похожие вопросы: