Could someone provide some example usages for the at command? I'm finding the man super confusing.

$ man at

For example, if we wanted to run a command 10 minutes from now, can this be done using at? (and without using sleep)


The time spec for "10 minutes from now" is now +10 minutes. For example,

echo 'open ~' | at now +10 minutes

However, the at system is disabled by default in macOS, as mentioned in the at man page:

     Note that at is implemented through the launchd(8) daemon periodically
     invoking atrun(8), which is disabled by default.  See atrun(8) for infor-
     mation about enabling atrun.

The atrun man page says that you need to run

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
| improve this answer | |

I Use the at command when I need to do some heavy processing on data, which I want to have executed during the night, when I am not behind my computer. Of course I could start the process just after I leave, but this is something I tend to forget.

The result of the command is not different from regularly execution of the script or command.

What it does
excerpt from at man page

       at, batch, atq, atrm - queue, examine or delete jobs for later execution

       at  and  batch  read  commands  from  standard  input or a specified file
       which are to be executed at a later time, using /bin/sh.

The usage of the tools:

Usage: at [-V] [-q x] [-f file] [-mldbv] timespec ...
       at [-V] [-q x] [-f file] [-mldbv] -t time
       at -c job ...
       atq [-V] [-q x]
       atrm [-V] job ...

at includes 4 commands (at, atq, atrm, and batch). You use at and batch to schedule the jobs, atq to see what's scheduled, and atrm to remove a job prior to it running.

$ at -f <cmd> timspec

The time to run the at job can be specified in different ways.

excerpt form at man page

At allows fairly complex time specifications, extending the POSIX.2 standard. It accepts times of the form HH:MM to run a job at a specific time of day. (If that time is already past, the next day is assumed.) You may also specify mid‐ night, noon, or teatime (4pm) and you can have a time-of-day suffixed with AM or PM for running in the morning or the evening. You can also say what day the job will be run, by giving a date in the form month-name day with an optional year, or giving a date of the form MMDD[CC]YY, MM/DD/[CC]YY, DD.MM.[CC]YY or [CC]YY-MM-DD. The specification of a date must follow the specification of the time of day. You can also give times like now + count time-units, where the time- units can be minutes, hours, days, or weeks and you can tell at to run the job today by suffixing the time with today and to run the job tomorrow by suffixing the time with tomorrow.

Say you have this shell script.

$ cat mycrontest.sh

 echo "It is now $(date +%T) on $(date +%A)"

Sample run:

$ ./mycrontest.sh
It is now 18:37:42 on Friday

Sample at job submissions:

$ at -f mycrontest.sh  10pm tomorrow
job 14 at Sun Jul  8 22:00:00 2007

$ at -f mycrontest.sh 2:00 tuesday
job 15 at Tue Jul 10 02:00:00 2007

$ at -f mycrontest.sh 2:00 july 11
job 16 at Wed Jul 11 02:00:00 2007

$ at -f mycrontest.sh 2:00 next week
job 17 at Sat Jul 14 02:00:00 2007

Credits to @slm

| improve this answer | |

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .