回答:
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
おそらくそれを行うためのより短い方法があります、私はちょうどそれを頭から取り出しました:)
awk
、atq | awk '{ system("at -c " $1) }'
以前の応答に基づいて、これは各ジョブの行をリストし、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
atqc
このためのコマンドを作成しました( "atq with command")。バッシュ関数。これをbashコマンドライン(端末コマンド)で実行します。または、~/.bashrc
ファイルに入れて後で利用できるようにします。
atqc () { atq|perl -ne'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/(marcinDEL\w+).\n(.*?)\n\1/s;print"$q $2"'; }
試して:
atqc
これは、at -V
バージョン3.1.13のRHEL7で機能します。
at -V
バージョン3.1.18のUbuntu 16.04の出力形式は少し異なるat -c N
ため、私のUbuntuサーバーではこれが機能します。
atqc(){ atq|perl -nE'($q,$j)=/((\d+).*)/;qx(at -c $j)=~/\n}\n(.*?)\s*$/s;say"$q: $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
。)