Утиліта at: плануємо разові завдання

Багато хто навіть не чув про утиліту at, за допомогою якої можна запланувати відкат правил брандмауера через 5 хвилин, якщо щось пішло не за планом.Опинившись у такій ситуації, ми й познайомилися з at. Потім, звичайно ж дізналися, що у FreeBSD є вбудований скрипт change_rules.sh для безпечної настройки правил ipfw., але це вже зовсім інша історія.

* At це утиліта командного рядка, яка допомагає планувати реалізацію команд в певний час. Створені за допомогою at завдання виконуються разово.

Встановлюємо at

Залежно від дистрибутива, at може бути у вашій системі Linux за замовчуванням, а може і не бути. У разі, коли утиліти немає, ви можете легко встановити її за допомогою диспетчера пакетів вашого дистро.

Інсталяція at на Ubuntu і Debian

$ sudo apt update
$ sudo apt install at

Установка at на CentOS і Fedora

$ sudo yum install at

Використовуємо команду at 

Спрощений синтаксис команди виглядає наступним чином: 

at [OPTION...] runtime

Команда at приймає runtime, який ви задали, як параметр командного рядка.

Як створити завдання, яке виконається о 9:00?

$ at 09:00

Як тільки клацнете Enter, перед вами з’явиться командний рядок at, який починається з at> (швидше за все). Далі, побачите повідомлення, в якому вказується оболонка, де буде виконуватися команда:

warning: commands will be executed using /bin/sh
at>

Введіть команди, які вам потрібно виконати. Наприклад:

tar -xf /home/linuxize/file.tar.gz

Коли закінчите з введенням команди, натисніть Ctrl-D, щоб зберегти завдання і вийти:

at> <EOT>
job 4 at Tue May  5 09:00:00 2020

Команда покаже номер, час і дату виконання завдання.

Визначаємо час виконання

В утиліті at можна:

  • вказати час. Використовуйте форму HH: MM або HHMM.Щоб задати 12-годинний формат часу, є: am або pm. Ви можете також використовувати такі рядки як now, midnight, noon, or teatime (16:00). Якщо зазначений час пройшло, завдання виконається на наступний день.
  • позначити дату. Команда дає можливість запланувати виконання завдання на зазначену дату. Задати це можна за допомогою назви місяця, а також року. Ви можете писати: today, tomorrow або weekday. Формат теж на вибір: MMDD [CC]YY, MM/DD/[CC]YY, DD.MM.[CC] YY or [CC]YY-MMDD.
  • додати одиницю часу. Утиліта плюсує одиницю часу в форматі now + count time-unit форматі, де count це число і time-unit може бути один з наступних рядків: minutes, hours, days або weeks.

Все це можна комбінувати, ось кілька прикладів: 

  • плануйте завдання на 10 хвилин пізніше поточного, на найближчий тиждень:

$ at sunday +10 minutes

  • заплануйте запуск завдання на 13:00 через два дні:

$ at 1pm + 2 days

  • плануйте запуск завдання на 12:30, 23 жовтня 2021 року:

$ at 12:30 102321

  • заплануйте запуск завдання через годину:

$ at now +1 hours

Вказуємо чергу 

За замовчуванням завдання плануються у зазначеній черзі. Ви можете задати чергу за допомогою опції -q. Наприклад, з чергою L:

$ at monday +2 hours -q L

Подивитися чергу завдань можна так:

$ atq

Як видалити завдання, які не завершились?

Щоб видалити відкладене завдання, викличте atrm або, at -r за якою слідує номер завдання. Наприклад, щоб видалити завдання з номером 9, ви повинні запустити:

$ atrm 9

Подробиці завдання:

$ at -c 9

За допомогою файлів /etc/at.allow і /etc/at.deny можна обмежувати список користувачів, кому дозволили юзати at.

Підсумок

Під час написання команди, використовуйте повні шляхи до бінарників, щоб не допустити проблем з path, якого не існує. Список виконаних команд в CentOs, можна подивитися там само, де і логи cron.

Залишити відповідь

Дякуємо, що поділились