Инструменты пользователя

Инструменты сайта


at

at

at – это утилита командной строки, которая позволяет планировать выполнение команд в определенное время. Задания, созданные с помощью at, выполняются только один раз.

В некоторых дистрибутивах, требуется установка at

apt install at
# Либо
yum install at

Программа работает как сервис

systemctl status atd.service 

Синтаксис

  • at [-V] [-q очередь] [-f файл] [-mldbv] время
  • at -c задание [задание…]

Параметры запуска

Опция Значение
-V Выводит номер версии в стандартный поток stderr
-q очередь Использовать заданную очередь. Структура очереди содержит одну букву; правильные структуры очереди ранжируются от a до z и от A до Z. Очередь c – это очередь по умолчанию для at, и очередь E – это очередь по умолчанию для batch. Очереди со старшими буквами запускаются вперёд очередей с младшими буквами. Если задание ставится в очередь, начинающуюся с заглавной буквы, то задание трактуется так, как если бы оно было установлено для batch в это время. Если для atq задаётся определённая очередь, то atq будет показывать только задания в этой очереди
-m По завершении задания посылает e-mail пользователю (даже если задача ничего не выводила)
-f файл Читает задание из файла, отличного от стандартного ввода
-l Это псевдоним для команды atq
-d Это псевдоним для команды atrm
-b Это псевдоним для команды batch
-v Указывает atq показывать завершённые задания, но пока не удалять задания в очереди; в других случаях — показывать время запуска задания
-c Выводит задания, перечисленные в командной строке, на стандартный вывод

Примеры использования

at

Первое, на что стоит обратить внимание, по умолчанию, все что планирует at, выполняется в среде /bin/sh

Создаем задачу на 11:40

at #!/bin/bash

В открывшемся терминале указываем команду/скрипт который нужно выполнить

/home/nevvad/script

После ввода команд, нажимаем Ctrl-D, чтобы выйти из командной строки и сохранить задание.

Чтобы посмотреть текущею очередь заданий вводим

atq
3       Tue Dec  1 11:25:00 2020 a nevvad
5       Mon Nov 30 11:40:00 2020 a nevvad

Еще можно создавать задачи так:

# Задача выполнится через 5 минут после создания
at now +5 minute

# Указываем конкретную дату (сначала месяц, потом число)
at 12:20 12012020 

# предстоящее воскресенье на десять минут позже текущего времени
at sunday +10 minutes

# на 14:00 через два дня
at 2pm + 2 days

Для удаления заданий, смотрим очередь заданий через atq, и удаляем указывая номер задания

atrm 3

Команда batch

batch или его псевдоним at -b, планирует задания и выполняет их в очереди пакетов, когда позволяет уровень загрузки системы. По умолчанию задания выполняются, когда средняя загрузка системы ниже 1,5. Значение загрузки может быть указано при вызове демона atd. Если средняя загрузка системы выше указанной, задания будут ждать в очереди.

Для того чтобы изменить параметр средней загрузки системы редактируем файл /lib/systemd/system/atd.service Посмотрим на него

[Unit]
Description=Job spooling tools
After=syslog.target systemd-user-sessions.service

[Service]
EnvironmentFile=/etc/sysconfig/atd
ExecStart=/usr/sbin/atd -f $OPTS
IgnoreSIGPIPE=no

[Install]
WantedBy=multi-user.target

Изменяем параметр ExecStart указывая нужное нам значение. Например:

ExecStart=/usr/sbin/atd -f -l 5.2

Перезапускаем демон systemctl

systemctl daemon-reload

И перезапускаем демон atd

systemctl restart atd.service

Теперь, в системе работает указанный параметр средней загрузки

systemctl status atd.service
● atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enable>
   Active: active (running) since Mon 2020-11-30 16:13:26 MSK; 7s ago
 Main PID: 397014 (atd)
    Tasks: 1 (limit: 23584)
   Memory: 384.0K
   CGroup: /system.slice/atd.service
           └─397014 /usr/sbin/atd -f -l 5.2

Ограничение пользователей

Файлы /etc/at.deny и /etc/at.allow позволяют контролировать, какие пользователи могут создавать новые задания с командой at или batch. Файлы состоят из списка имен пользователей, по одному имени пользователя в строке.

По умолчанию существует только файл /etc/at.deny и является пустым, что означает, что все пользователи могут использовать команду at. Если нужен банхаммер для определенного пользователя, добавляем имя пользователя в этот файл.

Если файл /etc/at.allow существует, только пользователи, перечисленные в этом файле, могут использовать команду at

Если ни один из файлов не существует, тогда только root может использовать команду at.

at.txt · Последнее изменение: 2020/11/30 16:15 — 82.204.251.18