at ではある程度複雑な TIME 指定ができる。これは POSIX.2 標準を拡張したものである。 ジョブを実行する時刻は HH:MM という形式で指定できる。 (すでにその時刻を過ぎているときは次の日に実行する。) また midnight (真夜中), noon (正午), teatime (午後4時のお茶の時間) とか、 AM , PM も指定できる。 さらに、コマンドの実行日を指定することもできる。 日付の指定は month-name day ( year も追加できる) のようにする。または MMDDYY, MM/DD/YY, DD.MM.YY なども可能である。 日付の指定は、その日の時刻の後に指定しなければならない。 また now + count time-units, と指定することでコマンドをどのくらい後に実行するか指定できる。 時間の単位には minutes, hours, days, weeks が使える。 さらにジョブを今日実行したい場合は today を、明日実行したい場合は tomorrow を、それぞれ時刻の後に付ければ良い。
例えば、今日から 3 日後の午後 4 時にジョブを実行する場合 at 4pm + 3 days, とし、 7 月 31 日の午前 10 時にジョブを実行するときは at 10am Jul 31 とし、明日の午前 1 時に実行するときは at 1am tomorrow とする。
時間指定方法の厳密な定義は /usr/doc/at/timespec に書いてある。
at と batch は、ともに標準入力や -f オプションで指定されたファイルのコマンドを実行する。 作業ディレクトリ、環境 (環境変数 TERM, DISPLAY, _ を除く)、 umask には、 at や batch が起動されたときのものが保存される。 su(1) したあとのシェルから起動された at (または batch ) コマンドでは、カレントのユーザー ID が用いられる。 コマンドを実行した結果、標準エラー出力や標準出力が出ると、ユーザー はメールを受け取る。 メールの配送には /usr/bin/sendmail が用いられる。 at が su(1) したあとのシェルから起動されたときは、ログインシェルのオーナーがメール を受け取る。
スーパーユーザーは、どんな場合でも必ずこのコマンドを使うことができる。 他のユーザーのパーミッションは /etc/at.allow と /etc/at.deny で指定する。
/etc/at.allow があれば、そこに書かれたユーザーのみが at を使える。
/etc/at.allow がなければ /etc/at.deny をチェックし、そこに書かれて「いない」ユーザーすべてが at を使える。
もしどちらのファイルもなければ、スーパーユーザーのみ at を使うことができる。
空の /etc/at.deny があるときは、全てのユーザーがこれらのコマンドを使うことができる。 この設定がデフォルトである。
大文字のキューで予約されたジョブは、 batch で指定されたかのよう に扱われる。 atq でキューを指定すると、そのキューにたまっている 未実行ジョブだけを表示する。
時刻は "1997-02-20 14:50" のような形式で表示される。ただし環境変数 POSIXLY_CORRECT が指定されている場合は "Thu Feb 20 14:50:00 1996" のようになる。
もし /etc/utmp が壊れて使えなかったり、 at がジョブを実行するときにユーザーがログインしてなかったりすると、 環境変数 LOGNAME で指定されたユーザー ID にメールを送る。もしこの変数が定義されて いなかったり、空だったりした場合、カレントのユーザー ID に送られる。
at と batch の現在の実装は、ユーザーが資源を取り合っているような状況下では 適当なものではない。このような場合は他のbatchシステム、たとえば nqs などを考えるべきだろう。