🐧 Как планировать задачи с помощью at на Linux

by itisgood

Демон atd

Демон atd позволяет пользователям отправлять задания для выполнения в более позднее время, например, «в 2 часа ночи».

Чтобы использовать демон atd, он должен быть запущен.

Пользователи могут подтвердить, что atd запущен, просто изучив список запущенных процессов:

$ ps aux | grep atd
daemon   4730  0.0  0.2  1420  532  ?      S  15:42  0:00   /usr/sbin/atd 
madonna  5570  0.0  0.2  3572  640  pts/2  S  16:43  0:00   grep atd

Обратите внимание, что седьмой столбец указывает, с каким терминалом связан процесс.

Для команды grep терминал – это pts/2, что, вероятно, относится к сетевой оболочке или графическому терминалу в X-сеансе.

Обратите внимание, что демон atd не имеет связанного терминала.

Одной из определяющих характеристик демона является то, что он отказывается от связи с терминалом, который его запустил.

Отправка задач с помощью at

Команда at используется для отправки заданий демону atd для запуска в определенное время.

Выполняемые команды либо отправляются в виде скрипта (с параметром командной строки -f), либо вводятся напрямую через стандартный ввод.

Стандартное сообщение из команды отправляется пользователю по почте.

at [-f filename | -m] TIME
Переключатель
Эффект
-f filename
запустить скрипт, указанный в filename
-m
Сообщить пользователю по электронной почте, когда закончится работа, даже если нет вывода.

Время дня можно указать в формате ЧЧ:ММ с суффиксом «am» или «pm».

Также могут использоваться термины “midnight”, “noon”, и “teatime”.

Дата также может быть указана в нескольких форматах, включая ММ/ДД/ГГ.

На странице руководства at (1) содержится гораздо больше деталей.

Отложить печать до 2 часов ночи.

$ at 2:00 am
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at> lpr fanmail.txt
at> CTRL-D
job 7 at 2020-06-17 02:00
Поскольку пользователь не использовал параметр командной строки -f, команда at предлагала ввести команды с помощью стандартного ввода (клавиатуры).
К счастью, пользователь знает, что CTRL-D при вводе непосредственно с терминала указывает на «конец файла».
В качестве альтернативы он мог бы напрямую передать команду в stdin:
$ echo "lpr fanmail" | at 2:00 am
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
job 7 at 2003-06-17 02:00
Затем пользователь подтверждает, что его задача была зарегистрирована с помощью atq.
$ atq
7     2003-06-17 02:00  user
Также пользователь может отменить свой таск и напрямую распечатать файл.
$ atrm 7 
$ atq 
$ lpr fanmail.txt

 

You may also like

Leave a Comment