xref: /freebsd/usr.bin/at/at.man (revision f4cf731d1aed3c7f58075fb035db24b291a6ee4a)
1.\" $FreeBSD$
2.Dd August 11, 2018
3.Dt "AT" 1
4.Os
5.Sh NAME
6.Nm at ,
7.Nm batch ,
8.Nm atq ,
9.Nm atrm
10.Nd queue, examine or delete jobs for later execution
11.Sh SYNOPSIS
12.Nm at
13.Op Fl q Ar queue
14.Op Fl f Ar file
15.Op Fl mldbv
16.Ar time
17.Nm at
18.Op Fl q Ar queue
19.Op Fl f Ar file
20.Op Fl mldbv
21.Fl t
22.Sm off
23.Op Oo Ar CC Oc Ar YY
24.Ar MM DD hh mm Op . Ar SS
25.Sm on
26.Nm at
27.Fl c Ar job Op Ar job ...
28.Nm at
29.Fl l Op Ar job ...
30.Nm at
31.Fl l
32.Fl q Ar queue
33.Nm at
34.Fl r Ar job Op Ar job ...
35.Pp
36.Nm atq
37.Op Fl q Ar queue
38.Op Fl v
39.Pp
40.Nm atrm
41.Ar job
42.Op Ar job ...
43.Pp
44.Nm batch
45.Op Fl q Ar queue
46.Op Fl f Ar file
47.Op Fl mv
48.Op Ar time
49.Sh DESCRIPTION
50The
51.Nm at
52and
53.Nm batch
54utilities
55read commands from standard input or a specified file which are to
56be executed at a later time, using
57.Xr sh 1 .
58.Bl -tag -width indent
59.It Nm at
60executes commands at a specified time;
61.It Nm atq
62lists the user's pending jobs, unless the user is the superuser; in that
63case, everybody's jobs are listed;
64.It Nm atrm
65deletes jobs;
66.It Nm batch
67executes commands when system load levels permit; in other words, when
68the load average drops below _LOADAVG_MX times number of active CPUs,
69or the value specified in the invocation of
70.Nm atrun .
71.El
72.Pp
73The
74.Nm at
75utility allows some moderately complex
76.Ar time
77specifications.
78It accepts times of the form
79.Ar HHMM
80or
81.Ar HH:MM
82to run a job at a specific time of day.
83(If that time is already past, the next day is assumed.)
84As an alternative, the following keywords may be specified:
85.Em midnight ,
86.Em noon ,
87or
88.Em teatime
89(4pm)
90and time-of-day may be suffixed with
91.Em AM
92or
93.Em PM
94for running in the morning or the evening.
95The day on which the job is to be run may also be specified
96by giving a date in the form
97.Ar \%month-name day
98with an optional
99.Ar year ,
100or giving a date of the forms
101.Ar DD.MM.YYYY ,
102.Ar DD.MM.YY ,
103.Ar MM/DD/YYYY ,
104.Ar MM/DD/YY ,
105.Ar MMDDYYYY , or
106.Ar MMDDYY .
107The specification of a date must follow the specification of
108the time of day.
109Time can also be specified as:
110.Op Em now
111.Em + Ar count \%time-units ,
112where the time-units can be
113.Em minutes ,
114.Em hours ,
115.Em days ,
116.Em weeks ,
117.Em months
118or
119.Em years
120and
121.Nm
122may be told to run the job today by suffixing the time with
123.Em today
124and to run the job tomorrow by suffixing the time with
125.Em tomorrow .
126.Pp
127For example, to run a job at 4pm three days from now, use
128.Nm at Ar 4pm + 3 days ,
129to run a job at 10:00am on July 31, use
130.Nm at Ar 10am Jul 31
131and to run a job at 1am tomorrow, use
132.Nm at Ar 1am tomorrow .
133.Pp
134The
135.Nm at
136utility also supports the
137.Tn POSIX
138time format (see
139.Fl t
140option).
141.Pp
142For both
143.Nm
144and
145.Nm batch ,
146commands are read from standard input or the file specified
147with the
148.Fl f
149option and executed.
150The working directory, the environment (except for the variables
151.Ev TERM ,
152.Ev TERMCAP ,
153.Ev DISPLAY
154and
155.Em _ )
156and the
157.Ar umask
158are retained from the time of invocation.
159An
160.Nm
161or
162.Nm batch
163command invoked from a
164.Xr su 1
165shell will retain the current userid.
166The user will be mailed standard error and standard output from his
167commands, if any.
168Mail will be sent using the command
169.Xr sendmail 8 .
170If
171.Nm
172is executed from a
173.Xr su 1
174shell, the owner of the login shell will receive the mail.
175.Pp
176The superuser may use these commands in any case.
177For other users, permission to use
178.Nm
179is determined by the files
180.Pa _PERM_PATH/at.allow
181and
182.Pa _PERM_PATH/at.deny .
183.Pp
184If the file
185.Pa _PERM_PATH/at.allow
186exists, only usernames mentioned in it are allowed to use
187.Nm .
188In these two files, a user is considered to be listed only if the user
189name has no blank or other characters before it on its line and a
190newline character immediately after the name, even at the end of
191the file.
192Other lines are ignored and may be used for comments.
193.Pp
194If
195.Pa _PERM_PATH/at.allow
196does not exist,
197.Pa _PERM_PATH/at.deny
198is checked, every username not mentioned in it is then allowed
199to use
200.Nm .
201.Pp
202If neither exists, only the superuser is allowed use of
203.Nm .
204This is the default configuration.
205.Sh IMPLEMENTATION NOTES
206Note that
207.Nm
208is implemented through the
209.Xr cron 8
210daemon by calling
211.Xr atrun 8
212every five minutes.
213This implies that the granularity of
214.Nm
215might not be optimal for every deployment.
216If a finer granularity is desired, the
217.Pa /etc/cron.d/at
218file can be edited and will be read by the system crontab, from which
219the SHELL and PATH environment variables are inherited.
220.Sh OPTIONS
221.Bl -tag -width indent
222.It Fl q Ar queue
223Use the specified queue.
224A queue designation consists of a single letter; valid queue designations
225range from
226.Ar a
227to
228.Ar z
229and
230.Ar A
231to
232.Ar Z .
233The
234.Ar _DEFAULT_AT_QUEUE
235queue is the default for
236.Nm
237and the
238.Ar _DEFAULT_BATCH_QUEUE
239queue for
240.Nm batch .
241Queues with higher letters run with increased niceness.
242If a job is submitted to a queue designated with an uppercase letter, it
243is treated as if it had been submitted to batch at that time.
244If
245.Nm atq
246is given a specific queue, it will only show jobs pending in that queue.
247.It Fl m
248Send mail to the user when the job has completed even if there was no
249output.
250.It Fl f Ar file
251Read the job from
252.Ar file
253rather than standard input.
254.It Fl l
255With no arguments, list all jobs for the invoking user.
256If one or more
257job numbers are given, list only those jobs.
258.It Fl d
259Is an alias for
260.Nm atrm
261(this option is deprecated; use
262.Fl r
263instead).
264.It Fl b
265Is an alias for
266.Nm batch .
267.It Fl v
268For
269.Nm atq ,
270shows completed but not yet deleted jobs in the queue; otherwise
271shows the time the job will be executed.
272.It Fl c
273Cat the jobs listed on the command line to standard output.
274.It Fl r
275Remove the specified jobs.
276.It Fl t
277Specify the job time using the \*[Px] time format.
278The argument should be in the form
279.Sm off
280.Op Oo Ar CC Oc Ar YY
281.Ar MM DD hh mm Op . Ar SS
282.Sm on
283where each pair of letters represents the following:
284.Pp
285.Bl -tag -width indent -compact -offset indent
286.It Ar CC
287The first two digits of the year (the century).
288.It Ar YY
289The second two digits of the year.
290.It Ar MM
291The month of the year, from 1 to 12.
292.It Ar DD
293the day of the month, from 1 to 31.
294.It Ar hh
295The hour of the day, from 0 to 23.
296.It Ar mm
297The minute of the hour, from 0 to 59.
298.It Ar SS
299The second of the minute, from 0 to 60.
300.El
301.Pp
302If the
303.Ar CC
304and
305.Ar YY
306letter pairs are not specified, the values default to the current
307year.
308If the
309.Ar SS
310letter pair is not specified, the value defaults to 0.
311.El
312.Sh FILES
313.Bl -tag -width _ATJOB_DIR/_LOCKFILE -compact
314.It Pa _ATJOB_DIR
315directory containing job files
316.It Pa _ATSPOOL_DIR
317directory containing output spool files
318.It Pa /var/run/utx.active
319login records
320.It Pa _PERM_PATH/at.allow
321allow permission control
322.It Pa _PERM_PATH/at.deny
323deny permission control
324.It Pa _ATJOB_DIR/_LOCKFILE
325job-creation lock file
326.El
327.Sh SEE ALSO
328.Xr nice 1 ,
329.Xr sh 1 ,
330.Xr umask 2 ,
331.Xr atrun 8 ,
332.Xr cron 8 ,
333.Xr sendmail 8
334.Sh AUTHORS
335.An -nosplit
336At was mostly written by
337.An Thomas Koenig Aq Mt ig25@rz.uni-karlsruhe.de .
338The time parsing routines are by
339.An David Parsons Aq Mt orc@pell.chi.il.us ,
340with minor enhancements by
341.An Joe Halpin Aq Mt joe.halpin@attbi.com .
342.Sh BUGS
343If the file
344.Pa /var/run/utx.active
345is not available or corrupted, or if the user is not logged on at the
346time
347.Nm
348is invoked, the mail is sent to the userid found
349in the environment variable
350.Ev LOGNAME .
351If that is undefined or empty, the current userid is assumed.
352.Pp
353The
354.Nm at
355and
356.Nm batch
357utilities
358as presently implemented are not suitable when users are competing for
359resources.
360If this is the case, another batch system such as
361.Em nqs
362may be more suitable.
363.Pp
364Specifying a date past 2038 may not work on some systems.
365