Как я печатаю содержание в заданиях?

Если Вы хотите пользовательский параметр сервера, Вы могли бы посмотреть на hMailServer также (свободный и простой в использовании)

34
задан 26 August 2010 в 10:31
5 ответов

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 

Вероятно, существует более короткий способ сделать это, я просто высунул это из головы :)

39
ответ дан 28 November 2019 в 19:52
  • 1
    at -c $(atq | cut -f 1) или for each in $(atq | cut -f 1) избежит, "Не может найти jobid" ошибками. (Кроме того, Bash имеет for ((each=1; each<=MAXJOB; each++)) так никакая потребность в seq. Если Вы обеспокоены мобильностью, то #!/bin/sh.) –  Paused until further notice. 26 August 2010 в 18:08

Намного более простой подход:

for j in $(atq | cut -f 1); do at -c "$j"; done

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

for j in $(atq | cut -f 1); do at -c "$j" | less; done
4
ответ дан 28 November 2019 в 19:52

Основываясь на предыдущих ответах, это перечисляет строку каждого задания из 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
7
ответ дан 28 November 2019 в 19:52

для этого я создал команду atqc ("atq с командой"). Функция бэша. Запустите ее в командной строке bash (терминальная команда). Или поместите её в файл ~/.bashrc, чтобы сделать её доступной позднее:

atqc () { atq|perl -ne'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/(marcinDEL\w+).\n(.*?)\n\1/s;print"$q $2"'; }

Проверьте:

atqc

Это работает для RHEL7 с на -V версии 3.1.13.

Ubuntu 16.04 с на -V версии 3. 1.18 имеет немного другой формат вывода в на -c N, поэтому на моем сервере Ubuntu это работает:

atqc(){ atq|perl -nE'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/\n}\n(.*?)\s*$/s;say"$q: $1"';}
2
ответ дан 28 November 2019 в 19:52

Вот альтернативный подход, похожий на другие в этом потоке, но с использованием awk more:

atq | awk '{ print "at -c " $1 }' | bash

Чтобы выполнить «пробный запуск» и посмотреть, что будет выполнено, просто удалите часть «| bash» с конца.

1
ответ дан 19 March 2020 в 18:04

Теги

Похожие вопросы