名前
at, batch, atq, atrm - 後で実行するコマンドジョブをキューに入れたり、そのようなジョブの閲覧・削除を行なう
書式
at [-V] [-q queue] [-f file] [-mldbv] TIME at -c job [job...] atq [-V] [-q queue] [-v] atrm [-V] job [job...] batch [-V] [-q queue] [-f file] [-mv] [TIME]
解説
at と batch は、標準入力や指定されたファイルからコマンドを読み取り、後で /bin/sh を使って実行する。
at | 指定された時刻にコマンドを実行する。 |
atq | このコマンドを起動したユーザーの、実行されていないジョブを表 示する。スーパーユーザーで起動すると、全てのユーザー のジョブを表示する。 |
atrm | ジョブを削除する。 |
batch | システムの負荷レベルが許可したときコマンドを実行する。 すなわち、負荷平均が 0.8 か、または atrun で指定された値を下回るとコマンドを実行する。 |
例えば、今日から 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 があるときは、全てのユーザーがこれらのコマンドを使うことができる。 この設定がデフォルトである。
オプション
-V | バージョン情報を標準エラー出力に表示する。 |
-q queue | キュー指定をする。指定は英字1文字で行う。
有効な文字は
a から
z と
A から
Z である。
a キューが
at のデフォルトキューで、
b キューが
batch のデフォルトキューである。
後のほうの文字のキューほど、より nice レベルが大きくなる
(実行の優先度が下がる)。特殊キュー "=" は現在実行されているジョブのため
に予約されている。
大文字のキューで予約されたジョブは、 batch で指定されたかのよう に扱われる。 atq でキューを指定すると、そのキューにたまっている 未実行ジョブだけを表示する。 |
-m | ジョブが完了したとき、そのジョブがなにも出力しなくても、 ユーザーに完了通知をメールする。 |
-f file | 標準入力でなく、 file からジョブを読み取る。 |
-l | atq と同じ働きをする。 |
-d | atrm と同じ働きをする。
atq で指定された場合には、キューの中に存在している「終了したがまだ削除され
ていない」ジョブを表示する。そのほかのコマンドで指定された場合は、その
ジョブを実行する時刻を表示する。
時刻は "1997-02-20 14:50" のような形式で表示される。ただし環境変数 POSIXLY_CORRECT が指定されている場合は "Thu Feb 20 14:50:00 1996" のようになる。 |
-c コマンドラインで指定したジョブを標準出力に表示する。 | |
ファイル
/var/spool/atjobs /var/spool/atspool /proc/loadavg /var/run/utmp /etc/at.allow /etc/at.deny
関連項目
cron(1), nice(1), sh(1), umask(2), atd(8)
バグ
Linux で batch が正しく動作するためには、 /proc にマウントされた proc 形式のディレクトリが必要である。
もし /etc/utmp が壊れて使えなかったり、 at がジョブを実行するときにユーザーがログインしてなかったりすると、 環境変数 LOGNAME で指定されたユーザー ID にメールを送る。もしこの変数が定義されて いなかったり、空だったりした場合、カレントのユーザー ID に送られる。
at と batch の現在の実装は、ユーザーが資源を取り合っているような状況下では 適当なものではない。このような場合は他のbatchシステム、たとえば nqs などを考えるべきだろう。
著者
at はほぼ Thomas Koenig, ig25@rz.uni-karlsruhe.de によって書かれた。