To execute a job at a particular time only once the
at command is used. The format that is given for the at command is HH:MM. The terms such as noon, midnight, next week, tomorrow, next Monday, etc. can be used with the at command.
In simple terms, the
atcommand executes a job only once per day.
at [OPTION...] runtime at [-V] [-q queue] [-f file] [-mMlv] timespec... at [-V] [-q queue] [-f file] [-mMkv] [-t time] at -c job [job...] atq [-V] [-q queue] at [-rd] job [job...] atrm [-V] job [job...]
The below example will schedule the “ls /etc” command to be executed on the next 9:00 AM once.
at 9:00 AM at> ls /etc at> ^d job 3 at 2020-02-19 09:00
Use ^d to exit from at prompt.
Instead of the above command, you can use the below format to schedule a job using the
echo "ls /etc" | at 9:00 AM
A job can be scheduled in two ways. They are,
Let us learn how to schedule a job in two ways.
To Schedule a job at a specific date and time.
at time date
In the below example a job is scheduled at 11 am on Jan 23
at 11 am Jan 23
Schedule a job at a relative time from now
at now + COUNT UNIT
In the below example, a job is scheduled at 2 minutes from now(current time).
at now + 2 min
When you give incorrect format in scheduling a job an error will prompt showing ‘Garbled time‘
Scheduling a background job
In the below example, You can schedule a background job to execute at 1 hour from now, (or) 1 day from now.
at now + 1 hour at now + 1 day
In the below example you can learn the formats of the at command.
at 10 am tomorrow at 11:00 next month at 22:00 today at now + 1 week at noon
Schedule task at 6:00 AM.
at 06:00 AM
Schedule task at 06:00 AM on Monday.
at 06:00 AM Mon
Schedule task at 06:00 AM on 21’st July.
at 06:00 AM July 21
Schedule task at 05:00 AM on coming 21’st July 2021.
at 05:00 AM 7/21/2021 [OR] at 05:00 AM 7.21.2021
Schedule task at 05:00 AM on the same date at next month.
at 05:00 AM next month
Schedule task at 05:00 AM tomorrow.
at 05:00 AM tomorrow
Schedule task to execute just after 2 hours.
at now + 2 hour
Schedule task to execute just after 45 minutes.
at now + 45 minutes
Schedule task to execute just after 4 and 5 weeks.
at now + 4 week at now + 5 weeks
Schedule tasks to execute after 3 and 4 years.
at now + 3 year at now + 4 years
Schedule task to execute at midnight.
Scheduling task to run the commands present in a file.
To run the commands present in the file named f1 at 06.00 AM the below command is provided. In the f1 file, the command at -l is given which lists the scheduled tasks.
at -m 06:00 AM < f1
When the above command executes successfully, you'll receive a prompt similar to the example below:
//commands will be executed using /bin/sh job 1 at Sat Feb 20 00:06:00 2021 at -l
1 Wed Dec 24 00:22:00 2003
The above example provides the same output as the atq command.
atq command is used to list the scheduled
at jobs and the running jobs..
The following atq command will list all the pending at jobs. The first number shown is the Job number, followed by the time in which the process is to be executed, and the user name.
1 2021-02-19 10:00 a Tharani
When we list jobs by root account using
atq, it shows all user's jobs in the result. But if we execute it from a non-root account, it will show only that user's jobs.
You can use the program atq to view your currently-queued at jobs. Type atq to display the queue.
Fri Feb 02 10:00:00 2021 a Tharani
So to list all the scheduled
at jobs give the below command. It will only work if you have super user privileges.
sudo atq and type your password, when prompted.
3 2021-01-30 11:00 a root 5 2021-01-30 10:00 a john 1 2021-01-30 3:00 a root
Fields description :
The atrm command is used to delete the scheduled
at jobs using the job number.
For example, the below command will delete the job which has the job number 10