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 コマンドは、後で実行するコマンドの名前を標準入力から読み取り、ユーザーがそのコマンドの実行時期を指定できるようにします。
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 フラグを使うか、または 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 つを指定することもできます。
- 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 ジョブ用に、それぞれ予約されます。
|
-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 | エラーが発生しました。 |
例
- 端末からのコマンドをスケジュールするには、次のようなコマンドを入力します。
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 コマンドは引数を受け入れません。 - 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 用のスプール領域ディレクトリーが入っています。 |