A quick guide to At jobs in Sun Solaris


A quick reference guide for “at” utility in Sun Solaris. “at” utility in unix is similar to the “cron” daemon except for that “at” jobs are run only once while cron jobs are recurring. “at” is primarily used to schedule a job which can be command or a script to run once at a particular time although it can be made to reschedule the job. This could be immediatly or at a later time.

The at utility reads commands from standard input and groups them together as an at job, to be executed at a later time.

List AT jobs

To list all the at jobs scheduled on the Sun Server

sunsolaris# at -l
user = root     1210161000.a    Wed May  7 12:50:00 2008
user = root     1210161001.a    Wed May  7 12:50:01 2008
user = root     1210198500.a    Wed May  7 23:15:00 2008
user = root     1210331460.a    Fri May  9 12:11:00 2008
user = root     1210198320.a    Wed May  7 23:12:00 2008

To run a command at a particular time

sunsolaris# at -t 200805072312
at> reboot
at> <EOT>
  commands will be executed using /sbin/sh
  job 1210198320.a at Wed May  7 23:12:00 2008

In the above -t switch defines the time that follows it as the time at which the one or more command that follows at the “at>” prompt to be run. Once, all the commands are entered press “CTRL+D” to make “at” aware of the end of commands.

Run a job now

sunsolaris# at now
at>reboot
at> <EOT>
commands will be executed using /sbin/sh
job 1210100190.a at Tue May  6 19:56:30 2008

Run at noon (12pm)

sunsolaris# at noon
at> uname -a
at> <EOT>
commands will be executed using /sbin/sh
job 1210158000.a at Wed May  7 12:00:00 2008

Run at midnight

sunsolaris# at midnight
at> uname -a
at> <EOT>
commands will be executed using /sbin/sh
job 1210114800.a at Wed May  7 00:00:00 2008

To run a job “n” mins from now

Say you want to run the command in 5 minutes from now

sunsolaris# at now + 5minutes
at> uname -a
at> <EOT>
commands will be executed using /sbin/sh
job 1210100631.a at Tue May  6 20:03:51 2008

To run a script or a file

sunsolaris# at -f /root/myscript now

The above runs the script /root/myscript immediatly. The switch “-f” defines the file to be run instead of commands.

To remove/cancel an at job

sunsolaris# at -r <jobname>

For instance, in the following list of jobs I want to cancel the last job “1210100631.a” job.

sunsolaris# at -l
user = root     1210161000.a    Wed May  7 12:50:00 2008
user = root     1210161001.a    Wed May  7 12:50:01 2008
user = root     1210198500.a    Wed May  7 23:15:00 2008
user = root     1210331460.a    Fri May  9 12:11:00 2008
user = root     1210198320.a    Wed May  7 23:12:00 2008
user = root     1210158000.a    Wed May  7 12:00:00 2008
user = root     1210114800.a    Wed May  7 00:00:00 2008
user = root     1210100631.a    Tue May  6 20:03:51 2008

sunsolaris# at -r 1210100631.a

sunsolaris# at -l
user = root     1210161000.a    Wed May  7 12:50:00 2008
user = root     1210161001.a    Wed May  7 12:50:01 2008
user = root     1210198500.a    Wed May  7 23:15:00 2008
user = root     1210331460.a    Fri May  9 12:11:00 2008
user = root     1210198320.a    Wed May  7 23:12:00 2008
user = root     1210158000.a    Wed May  7 12:00:00 2008
user = root     1210114800.a    Wed May  7 00:00:00 2008

Now, you can see the last job removed from the scheduled list.

at job using a desired shell

To use C shell (csh)

sunsolaris -c -f /etc/myfile now

-c specifies the shell to be used as bash.

To use bash (sh)

sunsolaris -s -f /etc/myfile now

-s specifies the shell to be used as bash.
To email user

To email user who scheduled the at job once the at command is run

sunsolaris -m -f /etc/myfile now

The -m specifies at job to email the user once the job is run.

The at jobs are saved as files under

/var/spool/cron/atjobs

To see whats in a job, do a “cat”

sunsolaris# cat 1210114800.a
: at job
: jobname: stdin
: notify by mail: no
: project: 1
export HOME; HOME=’/’
export HZ; HZ=”
export LANG; LANG=’C’
export LOGNAME; LOGNAME=’root’
export MAIL; MAIL=’/var/mail/root’
export PATH; PATH=’/usr/sbin:/usr/bin’
export SHELL; SHELL=’/sbin/sh’
export TERM; TERM=’xterm’
export TZ; TZ=’GB’
$SHELL << ‘…the rest of this file is shell input’
#ident  “@(#).proto     1.6     00/05/01 SMI”   /* SVr4.0 1.2   */
cd /etc/dhcp
umask 22
ulimit unlimited
uname -a

Leave a Comment

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