at コマンド
目的
コマンドを後で実行します。
構文
ジョブを後で実行するためのスケジュール
at[-c|-k|-s |-q Queue] [-m] [-f File] {-t Date |Time[Day ] [Increment ] }
スケジュール済みジョブのレポートの作成
at -l[-v] [-o] [ジョブ ...|-q キュー]
at -n[ユーザー]
スケジュール済みジョブの除去
説明
at コマンドは、後で実行するコマンドの名前を標準入力から読み取り、ユーザーがそのコマンドの実行時期を指定できるようにします。
at コマンドは、ユーザーが出力をリダイレクトしない限り、スケジュール済みのコマンドに関する標準出力および標準エラーからのすべての出力をユーザーに送ります。 また、ジョブ番号とスケジュールされた時刻を標準エラーに書き込みます。
at コマンドは、実行時に現行処理環境を保存します。 オープン・ファイル・ディスクリプター、トラップ、優先順位は保存しません。
/var/adm/cron/at.allow および /var/adm/cron/at.deny ファイルは、どのユーザーが at コマンドを使用できるかを制御します。 root ユーザー権限を持つユーザーは、これらのファイルを作成、編集、または削除できます。 この 2 つのファイル内のエントリーには、1 行に 1 つずつユーザー・ログイン名が登録されています。 次に at.allow ファイルの例を示します。
root
nick
dee
sarahat.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 フラグを使うか、または Time、Day、および 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) を指定します。 |
CC と YY の数字はどちらもオプションです。 両方とも指定しないと、現行年であると見なされます。 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 および tomorrow を Day パラメーターのデフォルトの特殊値として認識します。 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 ジョブ用に、それぞれ予約されます。
|
| -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 ジョブ、タスクが完了した時刻、 およびコマンドを実行したユーザーを出力します。 |
監査イベントを適切に選択し、グループ化する方法、および監査イベント・データ収集の構成方法の詳細については、Securityの Setting Up Auditingを参照してください。
RBAC ユーザーおよび TrustedAIX®ユーザーの皆様へ:このコマンドは特権操作を実行できます。 特権命令を実行できるのは特権ユーザーのみです。 権限および特権について詳しくは、「セキュリティー」の『特権コマンド・データベース』を参照してください。 このコマンドに関連した特権および権限のリストについては、lssecattr コマンドまたは getcmdattr サブコマンドの項を参照してください。
終了状況
このコマンドは、以下の終了値を戻します。
| 項目 | 説明 |
|---|---|
| 0 | at コマンドは、1 つ以上のジョブの実行の正常な要求、除去、または出力をしました。 |
| >0 | エラーが発生しました。 |
例
- 端末からのコマンドをスケジュールするには、次のようなコマンドを入力します。
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. - 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 - ジョブに自身を再スケジュールさせるには、次のようなコードをシェル・ファイルに組み込むことにより、
シェル・プロシージャー内から at コマンドを呼び出します。
echo "ksh shellfile" | at now tomorrow - 後で実行するために送ったジョブを出力するには、次のように入力します。at -l
- ジョブを取り消すには、次のように入力します。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 用のスプール領域ディレクトリーが入っています。 |