AT(1)

名称
at, batch, atq, atrm - あとでジョブを実行させるためのキューの設定、確認、ジョブの削除を行なう

書式
at [-q queue] [-f file] [-mldbv] time at [-q queue] [-f file] [-mldbv] -t [[CC]YY] MMDDhhmm[.SS] at -c job [job ...] at -l [job ...] at -l -q queue at -r job [job ...]

atq [-q queue] [-v]

atrm job [job ...]

batch [-q queue] [-f file] [-mv] [time]

解説
at と batch のユーティリティは、標準入力もしくは指定したファイルからコマンドを読み 込み、あとで sh(1) を使って実行します。

at  コマンドを、引数で指定した時間に実行します。

atq ユーザの、実行待ち状態のジョブのリストを表示します。 スーパユーザが実行した場合は全員のジョブが表示されます。

atrm
    指定したジョブを削除します。

batch
    ロードアベレージが特定の値以下になったときにジョブを実行 します。この値は、デフォルトでは 1.5 です。 この値は atrun によって指定可能です。

at ユーティリティでは、様々な形式の時間を time として受け付けます。 時刻は HHMM もしくは HH:MM の形で指定します (もしこの時刻が過ぎていた場合は、次の日のその時刻に設定されます)。 また、 midnight, noon, teatime (4pm) のキーワードも受け付けますし、時刻の後ろに AM もしくは PM をつけた時間も受け付けます。 日付は、 month-name day およびオプションの year の形で受け付けます。 DD.MM.YYYY, DD.MM.YY, MM/DD/YYYY, MM/DD/YY, MMDDYYYY, MMDDYY も受け付けます。 日付の指定は時刻の指定の後に記述します。 [now] + count time-units のような形式で時間を指定することも可能です。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 です。

at ユーティリティは、 POSIX 時刻書式 ( -t オプションを参照してください) もサポートしています。

at と batch はどちらも、標準入力または -f オプションで指定したファイルからコマンドを読み込み、実行します。 ワーキングディレクトリと環境変数 ( TERM, TERMCAP, DISPLAY および _ は除く)、umask は実行時のものが保持されます。 at もしくは batch が su(1) で起動されたシェルから実行された場合は、カレントの userid を保持します。 出力結果が得られた場合は、 その標準出力と標準エラー出力がメールで送られます。メールは sendmail(8) を使って送られます。もし at が su(1) で起動されたシェルから実行された場合は、そのログインシェルの所有者が メールを受けることになります。

スーパユーザはどんな場合でもこれらのコマンドを実行できます。 その他のユーザは /var/at/at.allow と /var/at/at.deny のファイルによって at を実行できるか決められます。

もし /var/at/at.allow が存在するならば、その中にユーザ名を記述されたユーザだけが at の実行を許可されます。 これらの 2 ファイルでは、ユーザ名の行において、 ユーザ名の前に空白や他の文字が無く、 たとえファイルの最後であってもユーザ名の直後に改行がある場合のみ、 ユーザが列挙されているとみなされます。 他の行は無視され、コメントとして使用可能です。

もし /var/at/at.allow が存在しなければ、 /var/at/at.deny がチェックされ、その中にユーザ名が記述されていないすべてのユーザが at の実行を許可されます。

もし両方ともなければ、スーパユーザだけが at を実行できます。 これがデフォルトの設定です。

空の /var/at/at.deny は全てのユーザがこれらのコマンドを使用できることを意味します。

実装に関する注
at の実装は、 atrun(8) を 5 分毎に呼び出す cron(8) デーモンを通じて実装されていることに注意してください。 これは、 at の粒度がすべての用途において最適ではないかもしれないことを意味します。 より細かい粒度が必要な場合、システムの crontab /etc/crontab を変更してください。

オプション

-q queue
    指定したキューを用います。キューの名称は単一の文字からなります。 有効なキューの名前は a から z と A から Z です。 at のデフォルトのキューは c で、 batch のデフォルトのキューは E です。 キューの文字が後の方であればあるほど nice 値が上がります。 もし大文字のキューがジョブに対して指定されたならば、時間を指定して batch が実行されたものとして扱われます。 もし atq でキューが指定されたときは、そのキューだけの実行待ちのジョブを表示します。

-m  出力がなかった場合でも、ジョブの完了時にメールをユーザに送ります。

-f file
    標準入力のかわりにファイルからジョブを読み込みます。

-l  引数無しの場合、起動したユーザの全ジョブを表示します。 1 個以上のジョブ番号を指定した場合、それらのジョブのみを表示します。

-d  atrm の別名 (本オプションは価値が低下しています。 代りに -r を使用してください)。

-b  batch の別名。

-v  atq の場合は、キューの中の実行されたがまだ削除されていないジョブを 表示します。さもなければジョブが実行される時間を表示します。

-c  コマンドラインにリストされたジョブを標準出力に出力します。

-r  指定したジョブを削除します。

-t  時刻書式を使用して、ジョブの時刻を指定します。 引数の書式は [[CC]YY] MMDDhhmm[.SS] という形式であることが必要であり、各文字の組は以下の意味です:

    CC  年の最初の 2 桁 (世紀)。
    YY  年の次の 2 桁。
    MM  月であり 1 から 12 です。
    DD  日であり 1 から 31 です。
    hh  時間であり、0 から 23 です。
    mm  分であり、0 から 59 です。
    SS  秒あり、0 から 61 です。

    CC および YY の文字の組が指定されない場合、今年を意味します。 SS の文字の組が指定されない場合、値は 0 になります。

関連ファイル
/var/at/jobs
    ジョブファイルを保管しておくディレクトリ
/var/at/spool
    出力ファイルを保管しておくディレクトリ
/var/run/utmp
    ログインレコード
/var/at/at.allow
    許可属性の設定
/var/at/at.deny
    不許可属性の設定
/var/at/jobs/.lockfile
    ジョブ作成のロックファイル

関連項目
nice(1), sh(1), umask(2), atrun(8), cron(8), sendmail(8)

バグ
/var/run/utmp が利用できないか不正であった場合、もしくは at が実行された時にユーザがログインしていない場合、 環境変数 LOGNAME で表される userid にメールが送られます。 もし定義されていないか空ならばカレントの userid になります。

ユーザ同士でリソースの競合がある場合は現実装の at と batch ユーティリティは適当ではありません。 もしこのような場合にあてはまるのなら、 nqs のような他のバッチシステムを検討してください。

2038 年以降の日付を指定しても動作しないシステムがあるかもしれません。

作者
at のほとんどの部分は Thomas Koenig <ig25@rz.uni-karlsruhe.de> が作成しました。 時間の構文解析部分は David Parsons <orc@pell.chi.il.us> が作成し、 Joe Halpin <joe.halpin@attbi.com> が少し拡張しました。