cron
is the daemon responsible for executing scheduled and recurring commands (every hour, every day, every week, etc.). atd
deals with commands to be executed a single time, but at a specific moment in the future.
locate
;
crontab -e
(его содержимое хранится в файле /var/spool/cron/crontabs/пользователь
).
/etc/crontab
или создавать дополнительные файлы crontab в каталоге /etc/cron.d
. У последних двух решений есть то преимущество, что можно указать пользователя, от имени которого запускается команда.
crontab
запись описывает запланированную команду с шестью (или семью) следующими полями:
Sun
, Mon
и т. д.);
/etc/crontab
и в фрагментах, расположенных в /etc/cron.d/
, но не в пользовательских файлах crontab);
a-b
describes the interval of all the values between a
and b
. The syntax a-b/c
describes the interval with an increment of c
(example: 0-10/2
means 0,2,4,6,8,10
). An asterisk *
is a wildcard, representing all possible values.
Пример 9.2. Sample user crontab
file
#Format #min hour day mon dow command # Download data every night at 7:25 pm 25 19 * * * $HOME/bin/get.pl # 8:00 am, on weekdays (Monday through Friday) 00 08 * * 1-5 $HOME/bin/dosomething # every two hours * */2 * * * $HOME/bin/dosomethingelse # Restart the IRC proxy after each reboot @reboot /usr/bin/dircproxy
at
осуществляется планирование какой-либо задачи в тот или иной момент в будущем. Команда принимает в качестве параметра командной строки время и дату, и её выполнение произойдёт в стандартном выводе. Команда будет выполнена таким образом, как будто она была выполнена в настоящей оболочке (shell). at
даже получит информацию о ваших переменных рабочего окружения (environment) для того, чтобы в будущем, при выполнении задания, воспроизвести хотя бы часть условий выполнения. Отображение времени следует обычным соглашениям: 16:12
или 4:12pm
соответствует 4:12 часа пополỳдня или 16 часов 12 минут. Дата может быть указана в нескольких европейских или западных форматах, включающих DD.MM.YY
(значение 27.07.22
таким образом соответствует 27 июля 2022), YYYY-MM-DD
(похожая дата будет выглядеть как 2022-07-27
), MM/DD/[CC]YY
(например, 12/25/22
или 12/25/2022
будут означать - Декабрь 25, 2022), или просто MMDD[CC]YY
(то есть значения 122522
или 12252022
будут, подобным образом, представлять Декабрь 25, 2022). Без этого, то есть без указания даты, команда будет выполнена в назначенное время, как только отсчёт времени достигнет его (в тот же день, или завтра, если указанное время сегодня уже было пропущено). Вы можете также просто написать “today” - сегодня или “tomorrow” - завтра, каждое из этих слов говорит само за себя.
$
at 09:00 27.07.22 <<END
>
echo "Don't forget to wish a Happy Birthday to Raphaël!" \
>
| mail lolando@debian.org
>
END
warning: commands will be executed using /bin/sh job 1 at Wed Jul 27 09:00:00 2022
at now + число период
. Значение период может быть minutes
, hours
, days
или weeks
. Значение число указывает число указанных единиц, которое должно пройти перед запуском программы.
cron
, нужно просто запустить crontab -e
и удалить соответствующую строку в файле crontab. Для задач at
это почти так же легко: надо запустить atrm номер-задачи
. Номер задачи указывается командой at
при её планировании, а также её можно найти с помощью команды atq
, выводящей текущий список запланированных задач.