Go to main content
マニュアルページ セク ション 1: ユー ザーコマンド

印刷ビューの終了

更新: 2016年12月6日
 
 

batch(1)

名前

at, batch - 指定した時間にコマンドを実行

形式

/usr/bin/at [-c | -k | -s] [-m] [-f file] [-p project] 
     [-q queuename] -t time
/usr/bin/at [-c | -k | -s] [-m] [-f file] [-p project] 
     [-q queuename] timespec...
/usr/bin/at -l [-p project] [-q queuename] [at_job_id. ..]
/usr/bin/at -r at_job_id. ..
/usr/bin/batch [-p project]
/usr/xpg4/bin/at [-c | -k | -s] [-m] [-f file] [-p project] 
     [-q queuename] -t time
/usr/xpg4/bin/at [-c | -k | -s] [-m] [-f file] [-p project] 
     [-q queuename] timespec...
/usr/xpg4/bin/at -l [-p project] [-q queuename] 
     [at_job_id. ..]
/usr/xpg4/bin/at -r at_job_id. ..
/usr/xpg4/bin/batch [-p project]

説明

at

at ユーティリティーは、一群のコマンドを標準入力から読み込み、それを 1 つの at-job として統合し、指定された時間に実行します。

この at-job は、シェルを別途呼び出して実行されます。このシェルは、別のプロセスグループで、制御端末なしで動作しているものです。ただし、環境変数、現在の作業用ディレクトリ、ファイル作成マスク (umask(1) を参照)、システムリソースの制限 (sh および ksh88 の場合のみ。ulimit(1) を参照) については、at ユーティリティーを実行した時点のものが保持されて、at-job 実行時に使用されます。

at-job が投入されると、at_job_id と実行開始予定時間が標準エラー出力に書き込まれます。at_job_id は、at-job の識別子で、英数字とピリオドだけで構成される文字列です。投入時点で、そのジョブが一意に識別できるような名前を at_job_id としてシステムが割り当てます。

ユーザーへの通知やジョブの標準出力および標準エラー出力の処理方法に関しては、–m オプションの項で説明します。

atbatch (後述) を使用できるのは、ファイル /usr/lib/cron/at.allow 中に名前が登録されているユーザーだけです。このファイルが存在していない場合は、ファイル /usr/lib/cron/at.deny を確認して、そのユーザーの at 使用を拒否すべきかどうかを決定します。どちらのファイルも存在しないときは、solaris.jobs.user の承認を受けたユーザーだけがジョブを投入できます。at.deny だけが存在しその内容が空の場合には、どのユーザーもジョブを投入できます。at.allowat.deny の両ファイルは、どちらも 1 行に 1 つのユーザー名という形式です。

ユーザーのアカウントがロックされていると、cron ジョブおよび at ジョブは実行されません。shadow(4) で定義されているように、ロックされていないアカウントだけが、ジョブまたはプロセスを実行します。

batch

batch ユーティリティーは、あとで実行すべきコマンド群を読み込みます。

次のコマンドの形式を見てください。


/usr/bin/batch [-p project]
/usr/xpg4/bin/batch [-p project]

前述のコマンドの形式は、それぞれ次のコマンドの形式と同等の意味を持ちます。


/usr/bin/at -q b [-p project] now
/usr/xpg4/bin/at -q b -m [-p project] now

このうち bat の特殊な待ち行列で、バッチジョブ専用に使用します。バッチジョブは、バッチ待ち行列に投入されるとただちに実行されます。同時並行での実行が許されているジョブ数の制限によって、投入されたジョブの実行が遅れることがあります。queuedefs(4) を参照してください。

オプション

シェルの種類を指定するオプション –c–k–s がすべて省略された場合、デフォルトとして SHELL 環境変数によりシェルが決定されます。

/usr/xpg4/bin/at および /usr/xpg4/bin/batch では、SHELL が設定されていないか NULL の場合、/usr/xpg4/bin/sh が使用されます。

usr/bin/at および /usr/bin/batch では、SHELL が設定されていないか NULL の場合、/bin/sh が使用されます。

サポートしているオプションは、次のとおりです。

–c

C シェル。csh(1) を使って at-job を実行します。

–k

Korn シェル。/bin/ksh を使って at-job を実行します。

–s

Bourne シェル。sh(1) を使って at-job を実行します。

–f file

at-job の元になるファイルとして標準入力以外のファイルを使用するとき、そのファイルのパスを指定します。

–l

(小文字のエル)at_job_id が指定されなかったときは、コマンドを呼び出したユーザー用にスケジュールしたジョブをすべて報告します。at_job_id が指定されていれば、そのジョブに関する情報だけを報告します。

–m

at-job の実行が終了したら、その旨をメールで当該ユーザーに通知します。at-job が生成した標準出力と標準エラー出力の内容も、他の出力先が指定されない限り、ユーザーにメールで送られます。なおメールは、ジョブが何の出力も生成しなかった場合でも送付されます。

–m を省略すると、ジョブの標準出力と標準エラー出力の内容は、他の出力先が指定されない限り、メールで当該ユーザーに通知されます。そのような出力が生成されなければ、ジョブの終了は通知されません。

–p project

どのプロジェクトで at ジョブまたは batch ジョブを実行するかを指定します。–l オプションと共に使用すると、指定した特定のプロジェクトだけを検索します。project の値全体が数値である場合は、まずプロジェクト名として解釈され、次にプロジェクト ID として解釈されます。デフォルトでは、ユーザーの現在のプロジェクトが使用されます。

–q queuename

queuename で示す待ち行列にジョブをスケジュールします。–l オプションも一緒に指定すると、その待ち行列だけが検索の対象となります。queuename として指定できるのは、a から z までの英小文字です。デフォルトでは、at-job は待ち行列 a にスケジュールされています。また待ち行列 b はバッチジョブ用に予約されています。待ち行列 c は cron ジョブ用に予約されているので、–q オプションの引数として使うことはできません。

–r at_job_id

以前の at ユーティリティーでスケジュールされたジョブのうち、at_job_id で示す識別子を持ったジョブを削除します。

–t time

time オプション引数によって指定された時間に実行するようジョブを投入します。オプション引数は、touch(1) ユーティリティーによって指定される形式である必要があります。

オペランド

次のオペランドがサポートされています。

at_job_id

以前の at ユーティリティーによりジョブがスケジュールされたときに報告された名前。

timespec

ジョブを投入し実行する日時を指定します。すべての timespec の値は、スペース文字で区切られて連結されていると見なされます。日付と時間の値は、そのユーザーのタイムゾーン (TZ 変数が決定) で表されていると見なされます。ただし後述する time オペランドでタイムゾーン名を指定した場合を除きます。

C ロケールの場合、日時を指定する文字列は次に述べる 3 つの部分で構成されます。C ロケールの LC_TIME カテゴリからのすべての値は大文字と小文字の区別なく認識されます。

time

time は、1、2、または 4 桁の数で指定します。1 桁または 2 桁の場合は「何時」を示す値として、4 桁の場合は「何時何分」を示す値として解釈されます。2 つの数をコロンで区切り、hour:minute の形式で「何時何分」を指定することもできます。時間指定の直後に AM または PM (LC_TIME ロケールカテゴリの am_pm キーワードから得られる値) 表示を付加することもできます。そうしない場合は、24 時間制で記述された時間と見なされます。GMT、UCT、または ZULU (大文字小文字の区別なし) のタイムゾーン名を、ユニバーサル時間を調整する時間の指定に続けることもできます。その他のタイムゾーンは TZ 環境変数を使用して指定できます。また、time フィールドは、C ロケールの次のトークンのいずれかにすることも可能です。

midnight

12:00 am (真夜中) を表します (00:00)。

noon

12:00 pm (正午) を表します。

now

現在の日時を表します。つまり at now という指定は、ただちに at-job を投入するという意味ですが、すぐに実行されるかどうかはその時点でのジョブのスケジューリング状況に依存します。

date

日付を示す date の指定は任意で、「月」の名前 (LC_TIME ロケールカテゴリの mon または abmon キーワードから得られる値) の後に「日」を表す数値を記述する (さらにその後にコンマと「年」を表す数値があってもよい) 方法と、曜日 (LC_TIME ロケールカテゴリの day または abday キーワードから得られる値) を記述する方法があります。C ロケールでは 2 つの特殊な日付が認識されます。

today

現在の日付が示す日、つまり当日を表します。

tomorrow

現在の日付が示す日の次の日、つまり翌日を表します。

date を省略すると、指定された時間が現時間より後であれば当日、現時間より前であれば翌日とみなされます。指定した月の値が当月よりも前で「年」を省略した場合は、翌年とみなされます。

increment

省略可能な increment は、正の符号 (+) が前に付加された数値で、あとに次のいずれかが付加されます。minuteshoursdaysweeksmonths、または years。複数形を示す s は省略できます。また + 1 と同等の意味を持つキーワード next も使用できます。たとえば次のコマンドは同等です。

at 2pm + 1 week
at 2pm next week

使用法

ここに示す at コマンド行の形式は、C ロケールに対してだけ保証されています。その他のロケールでは、midnightnoonnowmonabmondayabdaytodaytomorrowminuteshoursdaysweeksmonthsyearsnext の各指定はサポートされていません。

コマンドの実行は、別のプロセスグループで制御端末なしで動作しているシェルを別途呼び出して行うので、コマンドを呼び出した環境でのオープンファイル記述子やトラップ、優先度などは失われてしまいます。

at

使用例 1 端末での指定例

端末でのコマンドシーケンスの例を示します。

$ at −m 0730 tomorrow
sort < file >outfile
<EOT>
使用例 2 出力先のリダイレクト

次のシーケンスは、出力先を標準エラー出力からパイプに変更するもので、コマンドプロシージャの中で使用すると便利です。なお、出力先変更指定の記述順序は重要なので注意してください。

$ at now + 1 hour <<!
diff file1 file2 2>&1 >outfile | mailx mygroup

使用例 3 ジョブ自身による再スケジュール

ジョブ自身に再スケジュールさせるため、at-job の中から at を呼び出すことができます。たとえば、次の my.daily という名前の日常処理スクリプトは毎日実行されます (ただし、このような作業では crontab を使う方法のほうが一般的です)。

# my.daily runs every day
at now tomorrow < my.daily
daily-processing
使用例 4 時間、オペランド指定

C ロケールの timespec の 3 つの部分の間隔は、明示的に記述してあれば非常に柔軟です。時間やオペランド指定の例を次に示します。

at 0815am Jan 24
at 8 :15amjan24
at now "+ 1day"
at 5 pm FRIday
at '17
	utc+
	30minutes'

batch

使用例 5 端末での指定例

端末でのコマンドシーケンスの例を示します。

$ batch
sort <file >outfile
<EOT>
使用例 6 出力先のリダイレクト

次のシーケンスは、出力先を標準エラー出力からパイプに変更するもので、コマンドプロシージャの中で使用すると便利です。なお、出力先変更指定の記述順序は重要なので注意してください。

$ batch <<!
diff file1 file2 2>&1 >outfile | mailx mygroup
!

環境変数

atbatch の実行に影響を与える次の環境変数の詳細については、environ(5) を参照してください。LANG、LC_ALL、LC_CTYPE、LC_MESSAGES、NLSPATH、および LC_TIME。

DATEMSK

環境変数 DATEMSK が設定されていれば、at はその値を、書式文字列を含むテンプレートファイルの完全パス名として使用します。この文字列は書式記述子とテキスト文字から構成され、環境変数 LANG または LC_TIME を適切に設定することによって、異なる言語で許容される日付表示形式をより豊富に提供するために使用します。利用可能な書式記述子の一覧については、getdate(3C) のマニュアルページを参照してください。「オペランド」のセクションで説明している time および date 引数、特殊名の noonmidnightnownexttodaytomorrow、および increment 引数の書式は、DATEMSK が設定されている場合には認識されません。

SHELL

at-job の呼び出しに使用するコマンドインタプリタの名前を指定します。この変数が設定されていないか値が NULL の場合には、sh が使用されます。sh 以外の値に設定されていれば、そのシェルを使用します。このとき、どのシェルを使うかを表す警告メッセージが出力されます。

TZ

タイムゾーンを指定します。ジョブは、timespec または –t time が示す時間に実行するために投入されますが、この時間は TZ 変数が示すタイムゾーンに対応した値です。timespec にタイムゾーン指定が含まれていれば、TZ が示すゾーンに代わってそちらが使用されます。timespec にタイムゾーン指定が含まれておらず、TZ も未設定か NULL の場合、デフォルトのタイムゾーンが使用されます。

終了ステータス

次の終了ステータスが返されます。

0

at ユーティリティーによるジョブの投入、削除、または一覧表示が正常終了しました。

>0

エラーが発生したため、ジョブはスケジュールされません。

ファイル

/usr/lib/cron/at.allow

atbatch の両ユーティリティーへのアクセス権を持つユーザーの一覧。1 行に 1 ユーザー名の形式

/usr/lib/cron/at.deny

atbatch の両ユーティリティーへのアクセスを拒否するユーザーの一覧。1 行に 1 ユーザー名の形式

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

/usr/bin/at

属性タイプ
属性値
使用条件
system/core-os
CSI
未対応
インタフェースの安定性
確実
標準
standards(5) を参照してください。

/usr/xpg4/bin/at

属性タイプ
属性値
使用条件
system/xopen/xcu4
CSI
未対応
インタフェースの安定性
標準

/usr/bin/batch

属性タイプ
属性値
使用条件
system/core-os
CSI
有効
インタフェースの安定性
標準

/usr/xpg4/bin/batch

属性タイプ
属性値
使用条件
system/xopen/xcu4
CSI
有効
インタフェースの安定性
標準

関連項目

auths(1), crontab(1), csh(1), date(1), ksh88(1), sh(1), touch(1), ulimit(1), umask(1), cron(1M), getdate(3C), auth_attr(4), shadow(4), queuedefs(4), attributes(5), environ(5), standards(5)

待ち行列を使用しているかどうかにかかわらず、cron(1M) の実行は常に 100 ジョブに限られています。

cron ではジョブの実行に遅れの出る場合があります。これらの遅れによって cron ジョブの処理がハングしたように見えることがあります。すべてのジョブは最後には実行されますが、極端に遅れが生じた場合には、cron を終了してから再起動することが唯一の回避策です。