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