Вопрос Как настроить работу Cron?


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

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


486
2017-08-16 08:25


происхождения




ответы:


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

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

crontab -e

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

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 - воскресенье.

Вы можете прочитать больше Вот,


600
2017-08-16 08:58



Они являются общесистемными и работают с высокими привилегиями. Я бы ничего не сказал, если нет необходимости в доступе или разрешении. Как правило, старайтесь делать вещи без возможностей. Поэтому мне больше нравится этот ответ: ubuntu.stackexchange.com/questions/2368/how-do-i-setup-cron-job/... - H Marcelo Morales
@Marcelo Morales, который также будет запускать заданные команды как root! если вы, с другой стороны, не используете sudo, тогда вы создадите пользователя crontab, и это будет запущено как пользователь, который его создал! - LassePoulsen
* / 15 * * * * / путь / в / команда была очень удобна для меня! благодаря! - Andrew Odendaal
Стоит отметить, что эти изменения применяются автоматически, вам не нужно перезапускать / перезагружать что-либо. - Molomby
Другим удобным советом является то, что вместо */15 * * * * /path/to/command, ты можешь сделать @reboot /path/to/command чтобы выполнить что-то при запуске. - Kenneth Worden


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

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

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

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

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

Самый гибкий способ - использовать систему crontab, которую вы можете редактировать, запустив sudo crontab -e в терминале. Это позволит вам запускать ваши команды как root (если вам нужен этот уровень привилегий) или любой другой пользователь в системе.

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

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

и сохраните файл.(обратите внимание на добавление пользователя в линию)

Вы можете увидеть содержимое файла crontab системы с помощью sudo crontab -l,

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


93
2017-08-16 09:21



Вот сладостный интерактивный манипулятор cron, который даст вам англичан на время cron crontab.guru - CTS_AE


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

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


51
2018-01-31 23:59



недоступно для 16.04, очевидно bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060 - TankorSmash
@TankorSmash Вы можете получить его Вот - M. Becerra
Требования к упаковке не могут быть выполнены 16.04 - Odysseus Ithaca


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

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

enter image description here


24
2018-02-11 14:35





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

$ sudo apt-get install gnome-schedule

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


11
2017-09-27 20:25



Он не найден для Ubuntu 16.04 - SaidbakR
PLease взгляните на I can't install gnome schedule on Ubuntu 16.04 @ askubuntu.com/questions/785657/..., Существует пакет для загрузки @ bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060/..., Просто выполните $ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb - Antonio


Я хотел установить задание 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

8