- Планирование задач при помощи программы at в Linux
- Использование программы at
- Просмотр всех запланированных задач при помощи atq
- Удаление запланированной задачи при помощи atrm
- Ограничение круга пользователей программы at
- Выполнение AT/USSD команд к /dev/ttyUSB* модему из консоли Linux
- Теория
- Выполнение AT/USSD команд
- minicom
- ussd.py
- Кодировка GSM 7bit в USSD запросах
- Кодирование в gsm7bit
- Декодирование из gsm7bit
- Команда at linux как работает
- Примеры использования
- Ознакомление со списком команд, запланированных для исполнения
- Удаление из очереди команд, запланированных для исполнения
- Команда at linux как работает
- Планирование заданий в Linux с помощью команды at
- Установка по команде в Linux
- Начало
- Использование команды at в Linux для планирования заданий
- Пример 1. Введите время/дату, используя естественный язык
- Пример 2. Использование указанного времени/даты
- Пример 3. Просмотр всех заданий в очереди с помощью atq
- Пример 4. Удаление запланированного задания с помощью atrm
- Пример 5: использование файла для команды at
- Пример 6. Запуск задания, когда загрузка процессора падает ниже порогового значения.
Планирование задач при помощи программы at в Linux
В прошлой статье я рассказывал о программах cron и crontab , которые используются для планирования периодически повторяющихся действий в системе GNU/Linux.
Но в некоторых случаях вам может потребоваться однократно выполнить задачу в заданное время, как раз для этой цели лучше всего подходит программа at , которая также позволяет выполнять команды во время снижения загрузки системы.
Еще одной причиной использования at может быть ваше желание выполнить команду, занимающую много времени, и отключиться от сервера; программа at подойдет и для этой задачи, но я бы также порекомендовал ознакомиться со статьями о запуске команд в фоновом режиме и использовании утилиты screen .
Таким образом, главной задачей программы at является «планирование однократного исполнения задачи». В этом плане она похожа на программу cron , которая обычно используется для планирования периодически повторяющихся задач; давайте рассмотрим основные примеры использования этой программы.
Использование программы at
Просмотр всех запланированных задач при помощи atq
На мой взгляд, вывод программы не особенно полезен, так как вы не можете посмотреть, какая команда выполняется в рамках задачи с идентификатором 3 или любой другой задачи.
Она выведет длинный список переменных окружения для выполнения команды и саму команду:
Этот вывод позволяет гораздо лучше понять предназначение задачи.
Удаление запланированной задачи при помощи atrm
Мы научились просматривать список запланированных задач и при желании их содержимое, теперь настало время рассмотреть способ их удаления из очереди при помощи программы atrm или команды at -d для удаления определенной задачи.
Данная команда ничего не выводит в консоль, но после ее выполнения вы можете убедиться в удалении задачи при помощи команды atq .
Ограничение круга пользователей программы at
Файлы /etc/at.allow и /etc/at.deny устанавливают пользователей, которые могут планировать задачи для последующего исполнения при помощи программ at и batch . В качестве формата этих файлов используется простой список имен пользователей по одному в каждой строке. Использование пробелов в этих файлах не допускается.
Пользователь root может использовать программы at и batch при любых условиях.
Источник
Выполнение AT/USSD команд к /dev/ttyUSB* модему из консоли Linux
Утилиты и скрипты для коммуникации с /dev/ttyUSB* устройством из shell консоли (bash скриптов).
Теория
Отправить в /dev/ttyUSB* терминал AT команду не составляет проблем. Но результат вывода мы не увидим!
Мы можем читать поток stdout c /dev/ttyUSB2 (результат выполнения команд):
- Нужно получить только результат выполнения конкретной AT команды, а не весь поток вывода.
- Нужно использовать gsm7bit кодировку для кодирования параметров и получения ответа при выполнении USSD запросов:
- Ну и хочется простоты в работе)
Выполнение AT/USSD команд
Скрипт at.sh для отправки AT команды и получения ответа в переменную:
Но вы получите ответ вида:
minicom
Можно отправить AT команду и перенаправить весь вывод в файл:
После этого нужно закрыть терминал и разобрать/декодировать весь вывод из файла output.txt. Не круто..
ussd.py
В сети нашел python скрипт для отправки USSD запросов (немного поправил):
Кодировка GSM 7bit в USSD запросах
Кодирование в gsm7bit
При отправке USSD запросов нужно кодировать USSD-код в кодировку GSM 7bit (как я понял из-за того, что модем не поддерживает текстовый режим).
Следующие запросы вернут ERROR:
Python функция gsm7bitencode для кодирования utf8 строки в gsm7bit:
Примечание
Смотрите онлайн-сервис для работы с кодировками: http://smstools3.kekekasvi.com/topic.php?id=288
Пример USSD команд в кодировке 7bit gsm проверки баланса:
Кодированные ответы (ответ всегда приходит на устройство /dev/ttyUSB2):
Декодирование из gsm7bit
Python функция gsm7bitdecode для декодирования gsm7bit в utf8:
Источник
Команда at linux как работает
Служба atd предназначена для выполнения команд в заданное время. В отличие от службы crond, служба atd выполняет каждую команду лишь раз и не предназначена для выполнения команд через заданные промежутки времени.
Команда at предназначена для управления службой atd, которая установлена по умолчанию в большинстве дистрибутивов Linux.
Примеры использования
Для планирования исполнения команд следует осуществлять вызов команды at со следующими аргументами:
at
at ЧЧ:ММ ММ/ДД/ГГ
Например, для исполнения команды в 12:15 после полудня в этот же день может использоваться следующая команда:
at 12:15 PM today
А для исполнения команды в 12:15 до полудня на следующий день — следующая:
at 12:15 tomorrow
Дата и время могут записываться в нескольких форматах: 02/01/09 или 02.01.09 и 4:00 pm или 16:00 соответственно.
После исполнения команды at с указанием времени и даты вы будете перемещены в простейшую интерактивную командную оболочку с приглашением at>. С помощью этой командной оболочки вы сможете ввести последовательность команд для исполнения, после чего вам нужно будет перейти на новую строку и воспользоваться сочетанием клавиш Ctrl+D для ее закрытия.
$ at 12:15
at> echo «i like linux-faq.ru»
at> ctrl-d
at>
job 17 at Fri Nov 25 12:15:00 2016
В том случае, если вы явно не укажите дату, но укажите время, которое в текущий день уже прошло, at будет предполагать, что вы хотите запланировать исполнение заданной последовательности команд в заданное время на следующий день.
Приведенная выше команда может быть запланирована для исполнения в то же время и с помощью следующей команды без необходимости работы с интерактивной командной оболочкой:
echo «i like linux-faq.ru» | at 12:15 tomorrow
Кроме того, вы можете использовать ключевые слова и числа. Например, для планирования исполнения команды в текущее время через неделю может использоваться следующая команда:
А для планирования исполнения команды в 4 часа утра через 3 для — следующая команда:
at 4:00 am + 3 days
Ознакомление со списком команд, запланированных для исполнения
Для ознакомления со списком команд, запланированных для исполнения, может использоваться либо аргумент -l команды at, либо отдельная команда atq:
Удаление из очереди команд, запланированных для исполнения
Для удаления команд, запланированных для исполнения, из очереди следует использовать либо аргумент -d команды at, либо отдельная команда atrm:
Источник
Команда at linux как работает
К родственным программам относятся:
at Выполняет команды в указанное время. batch Выполняет команды, когда это позволяет уровень загрузки системы. Иными словами, когда средняя загрузка падает ниже 1.5 или ниже значения, указанного при вызове cron(8).
Доступны следующие опции:
-b синоним batch -c Вывести на стандартный вывод задачи, перечисленные в командной строке. -f файл Прочесть задачи из файла а не из стандартного ввода. -l Выводит запланированные задачи текущего пользователя. Если пользователь — администратор, выводит задачи всех пользователей. -m Когда задача будет выполнена, отправляет сообщение пользователю, даже если задача не выводила никаких сообщений. -q очередь Использует указанную очередь. Очередь обозначается одной буквой. Допустимые символы — от a до z и от A до Z Очередь c по умолчанию используется командой at и очередь E используется batch Очереди, обозначенные заглавной буквой запускаются с повышенным приоритетом (т.е. с меньшим приоритетом). Если задача указана для добавления в очередь, обозначенную заглавной буквой, она обрабатывается так, как будто был добавлена командой batch Если пользователь указывает опцию — l и для at указана конкретная очередь, будут показаны только задачи, находящиеся в этой очереди. -r Удаляет указанные задачи из очереди at -t время Указать время задачи, используя формат touch(1). Аргумент должен быть указан в виде [[ВВ]ГГ]ММДДччмм[.СС] где каждая пара букв обозначает следующее:
ВВ две первых цифры года (век). ГГ две последние цифры года. ММ месяц года, с 1 по 12. ДД день месяца, с 1 по 31. чч час, с 0 по 23. мм минуты, с 0 по 59. СС секунды, с 0 по 61.
Если ВВ и ГГ не указаны, используется текущий год. Если СС не указаны, используется 0.
at разрешает относительно сложные спецификации времени. Программа принимает время в формате ччмм или чч:мм для запуска задачи в указанное время дня (если это момент уже прошел, используется следующий день.) Можно также указывать midnight полночь ), noon полдень ), или teatime (16:00), можно указывать после времени «AM» или «PM» для запуска задачи утром или вечером. Можно также указать, в какой день задача будет запущена, указав дату в форме название-месяца день а также (по желанию) год или введя дату в форме ДД.ММ.ВВГГ ДД.ММ.ГГ ММ/ДД/ВВГГ ММ/ДД/ГГ ММДДВВГГ или ММДДГГ
Год должен быть указан двумя или четырьмя цифрами. Если год указан двумя цифрами, используется ближайшая дата в будущем, которая может находиться в следующем веке, кроме случая, когда указан прошлый год, что считается опечаткой.
Формат даты должен совпадать с форматом времени дня. Можно использовать время в форме [`now (сейчас)’ ] + число единиц-времени где единицей-времени могут быть минуты часы дни или недели можно указать at запустить задачу сегодня, добавив после времени today (сегодня), и запустить задачу завтра, добавив после времени tomorrow (завтра).
К примеру, чтобы запустить задачу в 16:00 через три дня после сегодняшнего можно использовать at 16:00 + 3 days Для запуска задачи в 10:00 31го июля можно воспользоваться at 10:00 Jul 31 Для запуска в 1:00 завтра, можно использовать at 1:00 tomorrow
at также поддерживает формат времени, используемый touch(1) (см. опцию — t ).
И at и batch считывают команды со стандартного потока ввода (или файла указанного при помощи опции — f ) и исполняют их, используя текущий каталог, переменные окружения (исключая TERM TERMCAP DISPLAY и _ ) и umask на момент добавления команды. Команда at или batch при запуске через командную оболочку su(1) сохраняют идентификатор текущего пользователя. Пользователь получит сообщение с данными стандартного вывода и потока сообщений об ошибках для запланированной им команды, если что-то было выведено. Сообщение будет отправлено через sendmail(8). Если at выполняется через su(1),пользователь,указанныйпривызовеsu,получитэтосообщение.
Источник
Планирование заданий в Linux с помощью команды at
Главное меню » Linux » Планирование заданий в Linux с помощью команды at
Это можно сравнить с концепцией Crontab в Linux, которая является лучшим способом автоматизации повторяющихся задач.
В этой статье мы покажем, как вы можете использовать команду «at» для планирования выполнения задач и команд на определенное время в будущем.
Установка по команде в Linux
Прежде чем начать, вы должны проверить, установлено ли «at» в вашей системе. Он не установлен по умолчанию во всех операционных системах.
Вы можете проверить это, набрав:
Если программное обеспечение уже установлено, вернется номер версии. Если нет, его можно установить в системах на основе Debian, набрав:
Если вы используете другой дистрибутив Linux, то вам, возможно, придется изменить эту команду, чтобы отразить менеджер пакетов, используемый вашим дистрибутивом.
Начало
Утилита at на самом деле представляет собой серию команд, которые работают вместе для планирования заданий. Как мы уже упоминали, at предпочтительнее для ситуаций, когда ваша задача больше «одноразовая», чем повторяющееся событие.
Мы составили таблицу с некоторыми основными командами, связанными с at.
команда | функция |
---|---|
at | позволяет пользователю планировать задачу |
atq | выводит список заданий в очередь для вошедшего в систему пользователя или всех пользователей, если они запускаются как sudo |
atrm | удаляет задания по указанному номеру задания |
batch | указывает системе запускать задание только в указанное время, если загрузка системы находится на определенном уровне (средняя загрузка Использование команды at в Linux для планирования заданийИспользование at имеет свой уникальный формат. Когда вы хотите запланировать работу, вы наберете в свой терминал: Время является обязательным, но дата является необязательной. Если ничего не введено, будет сделано предположение на основе текущей даты и системного времени. Когда вы нажмете Enter, вам будет предложено ввести команды. Вы можете ввести столько, сколько хотите. Введите Ctrl + D, чтобы сохранить и выйти. Позвольте нам показать это вам с примерами. Пример 1. Введите время/дату, используя естественный языкУ вас есть много разных вариантов ввода времени. В отличие от crontab с его довольно сложной системой, основанной на звездочках, «at» распознает «человеческий» ввод более эффективно. Есть много человеческих подобных выражений, которые могут быть поняты с помощью программного обеспечения. Многие из них зависят от региона. Он может распознавать такие распространенные выражения, как «полночь» или «полдень». Он также может различать AM и PM. Кроме того, он может распознавать различные форматы для дней и дат, включая сокращения. Он также может использовать выражение «сейчас». Вы можете просто ввести команду, как показано ниже, и она будет запущена через 5 минут. Скорее всего, вы можете игнорировать предупреждение о bin /sh . Это может вызвать головную боль, если вы используете другую оболочку . Подавляющее большинство дистрибутивов Linux поставляются с bash, поскольку системная оболочка обозначается как «sh» … Это долгая история. Итак, прошло около минуты, верно? Проверьте каталог для нового файла. У вас должен быть файл с именем ‘message.txt’, содержащий наш текст. Выглядит хорошо, но правильно ли он запечатлел наше сообщение? Давайте посмотрим содержимое файла : Пример 2. Использование указанного времени/датыДля своей первой работы вы использовали «относительное» время «now + [time]». Это очень простой способ составить график работы, но вам может потребоваться конкретнее. На этот раз давайте наметим 2 задания в разное время. Вы можете использовать файл message.txt (созданный в предыдущем примере) для демонстрации. Каждое задание заменит содержимое файла. Вы можете проверить текущее время в вашей системе Linux с помощью команды date. Настройте первую работу на определенное время (через 5 минут): Настройте второе задание на определенное время (через 10 минут): Проверьте в 3:45: Проверьте в 3:50: Пример 3. Просмотр всех заданий в очереди с помощью atqВ любое время вы можете проверить запланированные задания с помощью команды atq. В нем будут перечислены все текущие запланированные задания для пользователя, вошедшего в систему. Чтобы просмотреть все задания в системе, вам может потребоваться использование повышенных привилегий. Каждое задание идентифицируется по идентификатору задания, назначенному времени и связанному пользователю. Вы также можете просмотреть содержимое запланированного задания с опцией -c: Пример 4. Удаление запланированного задания с помощью atrmЕсли вы решите отменить задание до его выполнения, это можно сделать, набрав команду с соответствующим идентификатором задания (который можно получить с помощью команды atq). Как видите, задание 11 было удалено из очереди. Пример 5: использование файла для команды atВозможно, у вас есть набор сценариев, которые вы хотите выполнять нерегулярно, и cron не подходит. Вы можете ввести несколько заданий без использования стандартного ввода. Давайте представим сценарий, в котором отдел кадров запрашивает документацию для компьютерной деятельности сотрудника, который, по их мнению, нарушает политику работы. Возможно, вы захотите, чтобы определенные журналы активности или другая историческая информация создавали для вас отчет в указанное время. Вы можете сэкономить время, перечислив необходимые сценарии в текстовом файле, выполнив их с помощью at. Вы поняли идею. Итак, теперь вы можете добавить -f к команде ‘at’ и включить имя файла после: Пример 6. Запуск задания, когда загрузка процессора падает ниже порогового значения.Пакетные задания будут выполняться, когда средняя загрузка ЦП по умолчанию опустится ниже 1,5. Метод ввода пакетных заданий идентичен «at», за исключением того, что ему не нужно указывать время. Если вы хотите изменить порог загрузки, вы можете сделать это с помощью следующей команды: Где n – это порог загрузки, который вы хотите выбрать. Страница man рекомендует вам изменить его на значение выше n-1, где n – это количество процессоров в вашей системе . Вывод Спасибо за прочтение. Мы надеемся, что ваше понимание команды улучшилось. Если у вас есть какие-либо вопросы или вы хотите поделиться тем, как вы используете эту команду, сообщите нам! Оставьте комментарий ниже. Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter. Источник |