Я хочу запланировать выполнение задачи на регулярной основе и слышал, что Cron - способ сделать это.
Как добавить задания Cron в Ubuntu?
Поместите скрипт в одну из этих папок: /etc/cron.daily
, /etc/cron.hourly
, /etc/cron.monthly
или /etc/cron.weekly
.
Если вам этого недостаточно, вы можете добавлять более конкретные задачи, например, два раза в месяц или каждые 5 минут. Зайдите в терминал и наберите:
crontab -e
Откроется ваш личный crontab (файл конфигурации 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 - воскресенье.
Вы можете прочитать больше здесь .
*/15 * * * * /path/to/command
вы можете@reboot /path/to/command
выполнить что-либо при запуске.Если задание, которое вы хотите запустить, может быть запущено с теми же привилегиями, что и ваш пользователь, я рекомендую использовать пользовательский crontab, который вы можете редактировать, запустив
EDITOR="gedit" crontab -e
(который будет использовать gedit для редактирования файла crontab) или простоcrontab -e
(который будет использовать редактор по умолчанию) в терминале.Например, если вы хотите что-то запускать каждые 10 минут, добавьте такую строку
и сохраните файл.
Вы можете просмотреть содержимое пользователя crontab с помощью
crontab -l
.Чтобы добавить задание cron, которое запускается от имени root, вы можете отредактировать crontab root, запустив
sudo crontab -e
.Самый гибкий способ - использовать системный crontab,
/etc/crontab
который вы можете редактировать только с правами root. В этом файле пользователь должен запускать каждую команду, как указано, так что вы можете запускать команды как root (в случае, если вам нужен этот уровень привилегий) или любой другой пользователь в системе.Например, если вы хотите запускать что-то каждые 10 минут от имени пользователя root, добавьте строку, подобную этой
(обратите внимание на добавление пользователя в линию)
Вы можете просмотреть содержимое системного файла crontab с помощью
cat /etc/crontab
.Более подробная информация по адресу: https://help.ubuntu.com/community/CronHowto
источник
Если вы предпочитаете делать это с помощью графического интерфейса, вы можете перейти в Центр программного обеспечения и установить запланированные задачи (или запустить
sudo apt-get install gnome-schedule
). Он предоставит мощный графический интерфейс для добавления задач cron.Обратите внимание, что если вы используете этот метод, задачи по умолчанию будут выполняться как ваш собственный пользователь, а не как пользователь root. Обычно это хорошая вещь.
источник
Я рекомендую планировщик задач KDE (
kde-config-cron
) . Доступ к нему из системных настроек в модуле планировщика заданий .Он управляет как личными, так и системными Crontabs, и простота создания временных границ меня очень удивила (см. Скриншот ниже). Я думаю, что эта часть действительно недооценена.
источник
KDE Task Scheduler не будет работать в обычной Ubuntu. Это работает только в системах KDE, таких как KUbuntu. Для системы без KDE вы предпочитаете использовать gnome-schedule
Приложение запланированных задач в тире.
источник
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
Я хотел, чтобы задание Cron запускалось через сценарий bash, поэтому выполнение этого сценария добавило бы задание cron.
Я понял, что когда вы используете:
Затем он создает файл:
/var/spool/cron/crontabs/root
Где root - это имя пользователя, который запускает команду crontab. Таким образом, основываясь на этом и, по крайней мере, на 14.04, мы можем выполнить следующие команды bash для создания нового задания Cron:
Нам также нужно установить правильное владение для файла:
И установите правильные разрешения:
Если при запуске
crontab -e
уже есть задания Cron в списке, вы можете добавить в список следующую команду:источник
Пример запуска скрипта
test_cron.sh
cron каждую минуту в Ubuntu 18.04 с использованием символической ссылки:test_cron.sh
файл:Если вы хотите использовать переменные окружения в вашем скрипте, как
$USER
в путях, лучше набрать точный путь, bash не будет знать ваши переменные во время выполнения.myname
это имя пользователя (входит в корневую группу, я не уверен, что необходимы права root).Разрешить пользователям устанавливать задания cron, при необходимости будет создан файл:
Путь к сценарию
/home/myname/shell/test_cron.sh
Я сменил владельца и сделал его исполняемым:
Я добавил символическую ссылку:
Зарегистрировался как
myname
я добавил новое задание для выполненияtest_cron
каждую минуту.Чтобы проверить, есть ли команда в списке:
Проверить исполнение
источник