Как увидеть содержимое задания в очереди команд AT-команд

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

Я знаю, что могу увидеть расписание с помощью atq, но это показывает мне только дату и время выполнения и не указывает, какая команда будет выполнена.

[root@myserver ~]# atq
1Thu Oct 31 04:45:00 2024 a root

Используя at -c 1, я получаю всю работу и много конфигураций (на данный момент для меня это просто мусор). Есть ли способ увидеть только чистую команду, которая будет выполнена?

Выполняя команду:

at -c 1|grep -ve '^[A-Z]'

вы получите команды, которые будут выполнены. Это также покажет дополнительные команды, но уберет длинный список переменных.

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

Чтобы просмотреть содержимое задания в очереди команд at и выявить конкретную команду, которая будет выполнена, вы можете использовать несколько утилит Linux, чтобы отфильтровать вывод и показать только нужную информацию. Давайте разберем процесс по шагам.

1. Просмотр очереди задач

Для начала вы можете использовать команду atq, чтобы получить список запланированных задач:

atq

Вывод может выглядеть следующим образом:

1    Thu Oct 31 04:45:00 2024 a root

Как видно, эта команда возвращает только время выполнения задачи и пользователя, который её запланировал, но не указывает команду, которая будет выполнена.

2. Получение содержимого задачи

Чтобы увидеть содержимое задачи, используйте команду at -c, передав ID задания, полученный с помощью atq. Для первого задания (ID 1) команда будет:

at -c 1

Однако, как вы уже заметили, данный вывод содержит не только саму команду, но и множество переменных и конфигурационных строк, которые могут путать. Это выглядит так:

#!/bin/sh
# atrun uid=0 gid=0
# jobs allow
...

# команде, которую хотите увидеть
echo "Привет, мир"

3. Фильтрация вывода

Чтобы получить только саму команду, исключив все строки с метаданными и комментариями, вы можете воспользоваться командой grep. Ваша команда может выглядеть следующим образом:

at -c 1 | grep -ve '^[A-Z]'

Эта команда отфильтрует строки, начинающиеся с заглавных букв, и выдаст вывод, который вам нужен, а именно:

echo "Привет, мир"

4. Лучшая фильтрация

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

at -c 1 | grep -v '^[[:space:]]*#' | grep -ve '^[A-Z]' | sed '/^[[:space:]]*$/d'

Эта команда уберет:

  • строки, начинающиеся с # (комментарии),
  • строки, начинающиеся с заглавных букв,
  • пустые строки.

Заключение

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

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

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