Monthly Archives: June 2010

building a better atq

I was frustrated at the poor information available by atq (what’s that? You’ll tell me WHEN you’re running stuff, but not WHAT you’re running? This seems a little out of order!)

In fact, atq is literally out of order – I guess the idea is that you pipe it through sort. very very old-school thinking :)

At the other end of the scale, at -c provides an information overload of EVERYTHING about the job. (60+ lines of env? yikes. I don’t need to know that most of the time!)

So where is the simple and useful summary that I’d genuinely expect of atq?
ie, not only the queued command times, but WHAT those commands are – one per line.

As a result, here is my simple “batq” – a better atq :)

#!/bin/bash

# a better atq
#
# returns the original atq output in bold
# AND IN ADDITION, ALSO:
# * returns items sorted
# * the intended working directory
# * the command to be run
#
        # TODO:
        # $command is not robust - will fail on multiple lines

function do_extraqinfo() {
    while read job ; do
        jobid=$(echo $job | awk '{print $1}')
        detail=$(at -c $jobid)
        dir=$(echo "$detail" | egrep ^cd | sed -e 's/cd \(.*\) || {/\1/g')
        command=$(echo "$detail" | tail -1)
        # alter the following line if the bold offends you
        tput bold ; echo -n "$job" ; tput sgr0
        echo "  $dir    $command"
    done
} 

atq | sort | do_extraqinfo