at コマンド

目的

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

構文

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

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

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

at -l[-v] [-o] [ジョブ ...|-q キュー]

at -n[ユーザー]

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

at -r[-F] [-i]ジョブ...

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 つを指定することもできます。

  • 午前
  • 午後
  • zulu

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

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

  • noon
  • midnight
  • 即時
  • AMのA
  • PMのP
  • 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 コマンドは today および tomorrowDay パラメーターのデフォルトの特殊値として認識します。 today 値は、指定した時刻が現在時よりあとにある場合のデフォルトの Day です。tomorrow 値は、時刻が現在時より前である場合のデフォルトです。 指定した月が現在の月より前であれば (そして年が与えられていなければ)、翌年がデフォルト年になります。

フラグ

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

パラメーター

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

セキュリティー

イベントの監査

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

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

監査イベントを適切に選択し、グループ化する方法、および監査イベント・データ収集の構成方法の詳細については、SecuritySetting Up Auditingを参照してください。

RBAC ユーザーおよび TrustedAIX®ユーザーの皆様へ:このコマンドは特権操作を実行できます。 特権命令を実行できるのは特権ユーザーのみです。 権限および特権について詳しくは、「セキュリティー」の『特権コマンド・データベース』を参照してください。 このコマンドに関連した特権および権限のリストについては、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>
    注: When entering a command name as the last item on the command line, a full path name must be given if the command is not in the current directory, and the command will not accept any arguments.
  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 用のスプール領域ディレクトリーが入っています。