Written by James McDonald

February 22, 2011

I am looking at the Linux at command again.

I used to think that you couldn’t create commands with arguments and feed them to at without using at -f filewithcommandsinit but I have discovered it’s quite easy using STDIN e.g.


# to add a new command to run 1 minute from now use echo and then the command
# by escaping the redirection you can include that also
 jm@bb:~$  echo echo this is a test \> /tmp/test | at -q z now + 1 minute
# here is an example of something that might do real work
# echo sudo /etc/rc.d/init.d/pptpd start | at -q p now + 4 hours
# you would have to add the user to your sudoers file with:
# username ALL=NOPASSWD:/etc/rc.d/init.d/pptpd 
# otherwise `at' would fail and try to launch a password prompt
warning: commands will be executed using /bin/sh
job 4 at Tue Feb 22 19:31:00 2011

# to list your at jobs use atq
jm@bb:~$ atq
4	Tue Feb 22 19:31:00 2011 z jm

# to view the contents of you job use at -c
jm@bb:~$ at -c 4
#!/bin/sh
# atrun uid=1000 gid=1000
# mail jm 0
umask 22
# a heck of a lot of environment trimmed but finally you get the command you passed in to at
...
echo this is a test > /tmp/test

Deleting all prior at commands from a certain queue
This one-liner lists the jobs cuts the job numbers out and feeds them to xargs which in turn give them to atrm to remove the jobs.

atq -q p | cut -f1 | xargs -IJOB atrm JOB
# e.g. 

# given a list of at jobs as shown
jm@bb:~$ atq
17	Tue Feb 22 19:41:00 2011 z jm
13	Tue Feb 22 19:41:00 2011 z jm
14	Tue Feb 22 19:41:00 2011 z jm
15	Tue Feb 22 19:41:00 2011 z jm
18	Tue Feb 22 19:41:00 2011 z jm
16	Tue Feb 22 19:41:00 2011 z jm

# run the one-liner on them
jm@bb:~$ atq -q p | cut -f1 | xargs -IJOB atrm JOB
jm@bb:~$ atq # they should be gone but their not because I specified the wrong queue with -q p
# instead of -q z 
17	Tue Feb 22 19:41:00 2011 z jm
13	Tue Feb 22 19:41:00 2011 z jm
14	Tue Feb 22 19:41:00 2011 z jm
15	Tue Feb 22 19:41:00 2011 z jm
18	Tue Feb 22 19:41:00 2011 z jm
16	Tue Feb 22 19:41:00 2011 z jm
# get it right
jm@bb:~$ atq -q z | cut -f1 | xargs -IJOB atrm JOB
jm@bb:~$ atq
# and they are all deleted

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.

You May Also Like…