Scheduling tasks in linux – the at command



I did an article a while back about cron and scheduling tasks in linux (I also mentioned kron which is a graphical interface for cron scheduling…). That works well and good for things that happen on a recurring basis, but the next question is what if I want to schedule a command (or series of commands) to happen once and not again? Well, to tell the truth I’ve used cron for this on occasion, being sure to revisit the crontab and remove the entry before it repeats again, but there is a better way. At.


I could probably do a bad vaudeville-esque bit and say “at what..”, but there is a very powerful and simple scheduler called at in linux. If you open up a command shell and want to run the command “killall mplayer” to end all running mplayer processes at 10 pm, here’s how you’d do it…..

$at 10 pm
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at> killall mplayer
at>
job 12 at 2006-01-16 22:00

So, I typed “at 10 pm” (without the quotes) a the $ prompt… it gave me an interactive way of entering commands…. next I typed “killall mplayer” (and pressed enter), then since I didn’t have another command I wanted to schedule, I merely pressed ctrl-d to exit and was promptly told that the task was scheduled for 2200 hours tonight (which is 10 pm).

at can handle fairly human-friendly time scheduling…. at 5 tuesday for instance would schedule for 5 am on tuesday (today is Monday and so it schedules for tomorrow, but it is swift enough to figure that if the time has already passed for the week, then it will do it the next time it comes around.)

atq can show what’s scheduled…
$ atq
13 2006-01-17 05:00 a avery
12 2006-01-16 22:00 a avery
$

atrm can remove scheduled tasks…. atrm 13
atrm 12
for instance removes the above entries….

it’s also possible to feed at a file with a list of commands…. at -f listofcommands.txt
the format is usually one command per line. More information on at is available by typing “man at”
(again without the quotes) at the command line.

   Send article as PDF   

Similar Posts