at コマンド

目的

コマンドを後で実行します。

構文

ジョブを後で実行するためのスケジュール

at [ -c | -k | -s | -q Queue ] [ -m ] [ -f File ] { -t Date | Time [ Day ] [ Increment ] }

スケジュール済みジョブのレポートの作成

at -l [ -v ] [ -o ] [ Job ... | -q Queue ]

at -n [ User ]

スケジュール済みジョブの除去

at -r [ -F ] [ -i ] Job ...

at -r [ -F ] [ -i ] -u User

説明

at コマンドは、後で実行するコマンドの名前を標準入力から読み取り、ユーザーがそのコマンドの実行時期を指定できるようにします。

at コマンドは、ユーザーが出力をリダイレクトしない限り、スケジュール済みのコマンドに関する標準出力および標準エラーからのすべての出力をユーザーに送ります。 また、ジョブ番号とスケジュールされた時刻を標準エラーに書き込みます。

at コマンドは、実行時に現行処理環境を保存します。 オープン・ファイル・ディスクリプター、トラップ、優先順位は保存しません。

/var/adm/cron/at.allow および /var/adm/cron/at.deny ファイルは、どのユーザーが at コマンドを使用できるかを制御します。 root ユーザー権限を持つユーザーは、これらのファイルを作成、編集、または削除できます。この 2 つのファイル内のエントリーには、1 行に 1 つずつユーザー・ログイン名が登録されています。次に at.allow ファイルの例を示します。

root
nick
dee
sarah

at.allow ファイルが存在している場合は、at コマンドを使用できるのは、そのファイルにログイン名が登録されているユーザーだけです。 システム管理者は、at.deny ファイルに特定ユーザーのログイン名を指定することによって、そのユーザーによる at コマンドの使用を明示的に禁止できます。 at.deny ファイルだけしかないときは、そのファイルに名前が登録されているユーザー以外は、誰でも at コマンドを使用できます。

次の条件のいずれかに該当する場合は、ユーザーは at コマンドを使用できません。

  • at.allow ファイルと at.deny ファイルが存在していない場合 (root ユーザーだけに使用が許可されます)。
  • at.allow ファイルが存在しているが、ユーザーのログイン名がその中に登録されていない場合。
  • at.deny ファイルが存在していて、ユーザーのログイン名がその中に登録されている場合。

at.allow ファイルが存在せず、at.deny ファイルも存在しない場合、 root 権限を持つユーザーのみが、at コマンドを使ってジョブの実行を要求できます。

ジョブを後で実行するようにスケジュールを設定するには、ジョブの開始時刻を指定する必要があります。 時刻を指定するには、-t Date フラグを使うか、または TimeDay、および Increment パラメーターを使います。毎秒 60 件の最大細分度で、任意数のジョブのスケジュールを設定できます。

-t フラグに付加する Date 変数は、次のフォーマットで指定します。

[[CC]YY]MMDDhhmm[.SS]

Date 変数内の数字は次のように定義されます。

項目 説明
CC 年の前半の 2 桁の数字 (世紀) を指定します。
YY 年の後半の 2 桁の数字を指定します。
MM 月 (01 から 12) を指定します。
DD 日 (01 から 31) を指定します。
hh 時 (00 から 23) を指定します。
mm 分 (00 から 59) を指定します。
SS 秒 (00 から 59) を指定します。

CCYY の数字はどちらもオプションです。 両方とも指定しないと、現行年であると見なされます。 YY の数字だけを指定し、CC の数字を指定しなかった場合は、CC の数字は次のように定義されます。

  • YY の値が 70 から 99 までの場合は、CC の値は 19 であると見なされます。
  • YY の値が 00 から 37 の場合は、CC の値は 20 であると見なされます。
  • SS のデフォルト値は 00 です。

    2038 年から 2105 年の間は、yyyy 形式で年を指定します。

結果の時刻は、TZ 環境変数の値によって異なります。

Time パラメーターは、オプションの接尾部を伴う数値として指定できます。 at コマンドは、1 桁と 2 桁の数値を時として解釈します。また、4 桁の数字を時と分として解釈します。 LC_TIME ロケール・カテゴリー内の T_FMT 項目は、時と分の順序を指定します。 デフォルトでは、時の次に分がくる順序です。 時と分を : (コロン) で区切ることもできます。 デフォルトの順序は Hour:Minute です。

さらに、次の接尾部の 1 つを指定することもできます。

  • am
  • pm
  • zulu

am または pm を指定しなければ、at コマンドは 24 時間制を使います。 これらの接尾部は、時間の後に、独立した引数として、あるいはスペースで区切って指定することができます。am および pm 接尾部は、LC_TIME ロケール・カテゴリー内の AM_STR および PM_STR 項目から取り出された定義済みの値です。 接尾部 zulu は、時刻が GMT (グリニッジ標準時) であることを示します。

at コマンドは、Time パラメーターの特殊値として次のキーワードも認識します。

  • noon
  • midnight
  • now
  • A (AM: 午前)
  • P (PM: 午後)
  • N (正午)
  • M (真夜中)

オプションの Day パラメーターは、月名と日付 (および、前にコンマを付けた年番号も可能)、または曜日で指定できます。 LC_TIME ロケール・カテゴリー内の D_FMT 項目は、月と日の順序を指定します (デフォルトでは、月名のあとに日付が続きます)。 LC_TIME ロケール・カテゴリー内の DAY_1 から DAY_7 項目は、長い日付名を指定します。 LC_TIME ロケール・カテゴリー内の ABDAY_1 から ABDAY_7 項目は、短い日付名を指定します。 LC_TIME ロケール・カテゴリー内の MON_1 から MON_12 項目は、長い月名を指定します。 LC_TIME ロケール・カテゴリー内の ABMON_1 から ABMON_12 項目は、短い月名を指定します。 デフォルトでは、長形式の名前は完全に表記され、短形式の名前は、曜日名が 2 文字以上に、月名が 3 文字に省略されます。

at コマンドは、Day パラメーターの特殊なデフォルト値として、today および tomorrow を認識します。 today 値は、指定した時刻が現在時よりあとにある場合のデフォルトの Day です。tomorrow 値は、時刻が現在時より前である場合のデフォルトです。 指定した月が現在の月より前であれば (そして年が与えられていなければ)、翌年がデフォルト年になります。

フラグ

項目 説明
-c このジョブの実行に csh コマンドを使用することを要求します。
-f File 標準入力を使わないで、指定されたファイルを入力として使います。
-F 削除の確認を抑制します。 このフラグは -r フラグと共に使います。
-i 対話式の削除を指定します。 このフラグは -r フラグと共に使います。
-k このジョブの実行に ksh コマンドを使用することを指定します。
-l スケジュール済みジョブを報告します。 root ユーザー権限を持つユーザーは、他のユーザーが発行したジョブを得ることができます。
-m コマンドが正常に実行されたことを示すメッセージをユーザーに送ります。
-n [ User ] お使いのキューまたはユーザーのキューに含まれるファイル数を報告します。
-o スケジュールされた順序でジョブを出力します。 このフラグは、-l フラグと共に使用した場合に限り有効です。
-q Queue 実行の要求をスケジュールするジョブが入っているキューを指定します。 これを -l フラグと共に使うと、報告の範囲が、Queue 変数に指定されているキューだけに限定されます。 デフォルトでは、at ジョブは a キュー内でスケジュールされます。 b、c および d キューは、 batch ジョブ、 cron ジョブ、 および sync ジョブ用に、それぞれ予約されます。
-q a
at ジョブをキューに入れます。
-q b
batch ジョブをキューに入れます。 batch コマンドは、このフラグを持つ at コマンドを呼び出します。
注: b キューを使っているときは、コマンドは標準入力から読み取られます。 また、コマンド・ラインに何を指定したかに関係なく、Time パラメーターには now キーワードも使用されます。
-q e
ksh ジョブをキューに入れます。これは -k フラグと同じです。
-q f
csh ジョブをキューに入れます。 これは -c フラグと同じです。
-q g-z
ユーザー定義キュー・ジョブをキューに入れます。
-r Job... at または batch コマンドによって既にスケジュールされている Job を除去します。Job は、at または batch コマンドにより割り当てられた番号です。 root ユーザー権限 (su コマンドを参照) がないユーザーは、自分のジョブだけしか除去できません。 root ユーザーは、atrm コマンドを使って、他のユーザーが発行したジョブ、 または特定ユーザーが発行したすべてのジョブを除去できます。
-s このジョブの実行に bsh コマンド (Bourne シェル) を使うことを要求します。
-t Date Date 変数に指定された時刻に実行されるジョブの実行を要求します。
-u User 指定されたユーザーのすべてのジョブを削除します。 これを -r フラグと共に使う場合は、Job 変数を指定しないでください (正しい構文は、at -r -u User)。
-v -l フラグと共に使用されて、リストされているジョブの内容を 示します。

パラメーター

項目 説明
Day オプションの Day パラメーターには、月名と日付 (そして場合によっては前にコンマを付けた年番号) か、または曜日を指定します。
Increment オプションの Increment パラメーターには、次のいずれかを指定できます。
  • + (正符号) のあとに、数値と次のいずれかのワードを付けたもの。
    • minute[s]
    • hour[s]
    • day[s]
    • week[s]
    • month[s]
    • year[s]
  • 特殊ワード next のあとに次のいずれかのワードを付けたもの。
    • minute[s]
    • hour[s]
    • day[s]
    • week[s]
    • month[s]
    • year[s]

セキュリティー

監査イベント

監査サブシステムが適切に構成されており、かつ使用可能である場合、at コマンドを実行するたびに、 次の監査レコードまたはイベントが生成されます。

イベント 情報
AT_JobAdd 実行された at ジョブ、タスクが完了した時刻、 およびコマンドを実行したユーザーを出力します。

監査イベントを正しく選択してグループ化する方法と、監査イベントのデータ収集を構成する方法の詳細については、セキュリティーの『監査の設定』を参照してください。

RBAC ユーザーと Trusted AIX® ユーザーへの注意: このコマンドは特権命令を実行できます。特権命令を実行できるのは特権ユーザーのみです。 権限および特権の詳細情報については、「セキュリティー」の『特権コマンド・データベース』を参照してください。このコマンドに関連した特権および権限のリストについては、lssecattr コマンドまたは getcmdattr サブコマンドの項を参照してください。

終了状況

このコマンドは次の終了値を戻します。

項目 説明
0 at コマンドは、1 つ以上のジョブの実行の正常な要求、除去、または出力をしました。
>0 エラーが発生しました。

  1. 端末からのコマンドをスケジュールするには、次のようなコマンドを入力します。

    uuclean が現行ディレクトリー内にある場合は、次のように入力します。

    at   5   pm   Friday
    uuclean
    <Ctrl-D>
     
    at   now   next   week
    uuclean
    <Ctrl-D>

    uuclean が $HOME/bin/uuclean の中にある場合は、次のように入力します。

    
    at   now   +   2   days
    $HOME/bin/uuclean
    <Ctrl-D>
    注: コマンド・ラインの最後の項目としてコマンド名を入力する場合、そのコマンドが 現行ディレクトリー内にないときは、絶対パス名を指定する必要があります。そう すれば、at コマンドは引数を受け入れません。
  2. uuclean コマンドを 1 月 24 日午後 3:00 時に実行するには、次のいずれかのコマンドを入力します。
    
    echo   uuclean   |   at   3:00   pm   January   24
     
    echo   uuclean   |   at   3 pm   Jan   24
     
    echo   uuclean   |   at   1500   jan   24
  3. ジョブに自身を再スケジュールさせるには、次のようなコードをシェル・ファイルに組み込むことにより、 シェル・プロシージャー内から at コマンドを呼び出します。
    echo   "ksh   shellfile"   |   at   now   tomorrow
  4. 後で実行するために送ったジョブを出力するには、次のように入力します。

    at    -l
  5. ジョブを取り消すには、次のように入力します。
    at    -r   ctw.635677200.a
    これで、ジョブ ctw.635677200.a が取り消されます。 ジョブに割り当てられているジョブ番号をリストするには、at -l コマンドを使います。

ファイル

項目 説明
/var/adm/cron/FIFO crontab または at コマンドを使用して新規ジョブを実行依頼したときに、cron デーモンにメッセージを送る名前付きパイプです。
/usr/bin/at at コマンドが入っています。
/var/adm/cron メイン cron ディレクトリーが入っています。
/var/adm/cron/at.allow 認可されたユーザーのリストを指定します。
/var/adm/cron/at.deny 否認されたユーザーのリストを指定します。
項目 説明
/var/spool/cron/atjobs at 用のスプール領域ディレクトリーが入っています。