Вопрос или проблема
Когда я запускаю команду 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
, рекомендуется экспериментировать с разными сценариями и конфигурациями задач, чтобы полностью понять её возможности и ограничения.