У меня есть ящик Debian с некоторыми заданиями, запланированными с использованием at
. Я знаю, что могу составить список вакансий с указанием их времени, используя atq
, но есть ли способ распечатать их содержимое, кроме просмотра /var/spool/cron/atjobs
?
at -c jobnumber
перечислит одну работу. Если вы хотите увидеть их все, вы можете создать сценарий вроде
#!/bin/bash
MAXJOB=$(atq | head -n1 | awk '{ print $1; }')
for each in $(seq 1 $MAXJOB); do echo "JOB $each"; at -c $each; done
Наверное, есть способ покороче, я просто выкинул это из головы :)
Основываясь на предыдущих ответах, здесь перечислены строки каждой вакансии из atq
показывает номер задания и запланированное время, а затем просто команду для запуска, отсортированную в хронологическом порядке (а не номер задания):
for j in $(atq | sort -k6,6 -k3,3M -k4,4 -k5,5 |cut -f 1); do atq |grep -P "^$j\t" ;at -c "$j" | tail -n 2; done
производство, например
48 Fri Mar 10 15:13:00 2017 a root
/usr/local/bin/a-command
47 Fri Mar 10 15:14:00 2017 a root
/usr/local/bin/another-command
Более простой подход:
for j in $(atq | cut -f 1); do at -c "$j"; done
Вы также можете посмотреть на каждый в less
в свою очередь, что может быть яснее:
for j in $(atq | cut -f 1); do at -c "$j" | less; done
Я создал команду atqc
для этого ("atq с командой"). Функция bash. Запустите это в командной строке bash (команда терминала). Или поместите это в ~/.bashrc
файл, чтобы сделать его доступным позже:
atqc () { atq|perl -ne'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/(marcinDEL\w+).\n(.*?)\n\1/s;print"$q $2"'; }
Попробуй это:
atqc
Это работает для RHEL7 с at -V
версия 3.1.13.
Ubuntu 16.04 с at -V
версия 3.1.18 имеет немного другой формат вывода в at -c N
, поэтому на моем сервере Ubuntu это работает:
atqc(){ atq|perl -nE'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/\n}\n(.*?)\s*$/s;say"$q: $1"';}
Вот альтернативный подход, похожий на другие в этой теме, но с большим использованием awk:
atq | awk '{ print "at -c " $1 }' | bash
Чтобы выполнить «пробный прогон» и посмотреть, что будет выполнено, просто удалите часть «| bash» с конца.