Где будет отображаться вывод команды at? [закрыто]

Вопрос или проблема

Когда я запускаю команду at в Kali Linux, она дает мне следующий вывод

$ echo "hello world" | at now +1 minute         
предупреждение: команды будут выполняться с использованием /bin/sh
задача 14 на Sun Feb 23 10:46:00 2025

Но вопрос вот в чем: где я могу увидеть hello world, которую я указал для выполнения, потому что я указал now +1 minute.

Когда я делаю ls в текущем каталоге, нет файла, в котором бы этот результат был показан.

.

Ответ или решение

Вопрос о том, где будет отображен вывод команды at, достаточно распространен среди пользователей Linux, особенно тех, кто использует эту команду впервые. Давайте разберемся в устройствах и особенностях команды at и ответим на вопрос о том, где же можно увидеть ожидаемый вывод.

Теория

Команда at используется для планирования выполнения задач на будущее время. Это аналог планировщика задач, который позволяет задавать команды для выполнения в определенное время в будущем. В примере, приведённом в вашем описании, выполняется следующий сценарий: строка "hello world" будет передана на выполнение через один минуту после ввода команды at.

Когда вы используете команду at, система сохраняет запланированное задание в очереди, пока не придет время его выполнения. По умолчанию, команда at выполняет переданную ей команду с использованием /bin/sh — стандартной оболочки Unix. Команда будет выполнена в том же окружении, что и текущая сессия пользователя, если не указано иное.

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

Пример

В сценарии, который вы описали:

echo "hello world" | at now +1 minute

Команда at планирует выполнение вывода текста "hello world" через одну минуту. После этого вы получаете сообщение:

warning: commands will be executed using /bin/sh
job 14 at Sun Feb 23 10:46:00 2025

это означает, что задание успешно создано и добавлено в очередь с идентификатором "job 14", и оно будет выполнено в указанное время.

Применение

Теперь вернемся к главному вопросу: "Где будет отображен вывод задания?" По умолчанию, когда at выполняет команду, вывод (стандартный) перенаправляется на почту пользователя. Это значит, что если вы хотите увидеть результат выполнения команды at, вам нужно проверить почтовый ящик пользователя на системе.

Вы можете сделать это, используя команду mail в терминале. Вот пример использования:

mail

При запуске команды mail, вы увидите список всех сообщений на вашем почтовом сервере, включая время и дату их получения. Найдите сообщение, соответствующее времени выполнения вашей задачи at.

Если вы используете систему без настроенной почты или предпочитаете другое решение, вы можете перенаправить вывод в файл, объявив это в самой команде. Например:

echo "hello world" > /path/to/output/file | at now +1 minute

В этом примере результат будет сохранен в указанный файл, и вы сможете его просмотреть в удобное для вас время.

Дополнительно, если вы хотите просмотреть список всех запланированных заданий, вы можете использовать команду atq (очередь at), которая покажет все текущие задания этого пользователя:

atq

Для удаления запланированного задания, если оно больше не требуется, используется команда atrm, после которой указывается идентификатор задачи:

atrm 14

Заключение

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

Чтобы по-настоящему освоить работу с at, рекомендуется экспериментировать с разными сценариями и конфигурациями задач, чтобы полностью понять её возможности и ограничения.

Оцените материал
Добавить комментарий

Капча загружается...