ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11.1 Information Library (日本語) |
- ユーザーの crontab ファイル
/usr/bin/crontab [filename]
/usr/bin/crontab -e [username]
/usr/bin/crontab -l [username]
/usr/bin/crontab -r [username]
/usr/xpg4/bin/crontab [filename]
/usr/xpg4/bin/crontab -e [username]
/usr/xpg4/bin/crontab -l [username]
/usr/xpg4/bin/crontab -r [username]
/usr/xpg6/bin/crontab [filename]
/usr/xpg6/bin/crontab -e [username]
/usr/xpg6/bin/crontab -l [username]
/usr/xpg6/bin/crontab -r [username]
crontab ユーティリティーは、crontab ファイルをコピー、作成、表示、削除することにより、cron (cron(1M) を参照) を使ってユーザーのアクセスを管理します。オプションなしで crontab を実行すると、指定したファイル (ファイルを指定しない場合は標準入力) を、全ユーザーの crontab が登録されているディレクトリにコピーします。
crontab にファイル名 (filename) を指定して実行すると、コマンドを実行したユーザーの crontab エントリが上書きされます。
ユーザー: 次の場合 crontab にアクセスできます。
/etc/cron.d/cron.allow に自分の名前が登録されている場合
/etc/cron.d/cron.allow が存在せず、/etc/cron.d/cron.deny に自分の名前が登録されていない場合
ユーザー: 次の場合 crontab にアクセスできません。
/etc/cron.d/cron.allow が存在しており、かつ自分の名前がそこに登録されていない場合
/etc/cron.d/cron.allow が存在せず、/etc/cron.d/cron.deny に自分の名前が登録されている場合
/etc/cron.d/cron.allow も /etc/cron.d/cron.deny も存在しない場合、ジョブを送ることができるのは、solaris.jobs.user の承認を受けているユーザーだけです。
Solaris 監査が有効な場合、ユーザーのシェルは監査されず、ユーザーは crontab の所有者になりません。これは、ユーザーが SSH のいずれかのバージョンなど、監査パラメータを設定しないプログラムを介してログインする場合に起こります。
なお allow または deny の規則が root に適用されるのは、 allow または deny ファイルが存在している場合だけです。
allow と deny の両ファイルは、いずれも 1 行に 1 ユーザー名が記述される形式になっています。
crontab ファイル内の各行は、6 つのフィールドで構成されています。各フィールドの間は、スペースまたはタブで区切られています。最初の 5 つのフィールドは、次の内容を指定する整数パターンです。
minute (0-59), hour (0-23), day of the month (1-31), month of the year (1-12), day of the week (0-6 with 0=Sunday).
整数値の代わりに、アスタリスク (有効な値全部を表す) や、コンマで区切った形式の要素リストを指定することもできます。要素は、数値 1 個で指定しますが、ある数値からある数値までの範囲を指定する場合は、数値 2 個をマイナス記号 (–) で区切って指定します。ここで指定された時間は、現在有効なタイムゾーンで解釈されます。crontab ファイルの先頭には、/etc/default/init 内でシステム全体に設定されているタイムゾーンが記述されています。ユーザーは、次のように記述して行を追加できます。
TZ=timezone
すべての後続エントリは、新たな TZ=timezone 行が現れるまで、そのタイムゾーンを使って解釈されます。日付は、2 つのフィールド (日および曜日) で指定できます。どちらのフィールドも、要素のリストとして指定された場合に付加されます。「使用例」を参照してください。
crontab ファイル内の行の 6 番目のフィールドは、指定した時間にシェルによって実行されるコマンド文字列です。このフィールド内の % 文字 (\ によってエスケープされているものは除く) は、復帰改行 (NEWLINE) 文字に変換されます。
シェルによって実行されるのは、このコマンドフィールドの第 1 行 (` % ' または行の終わりまで) のみです。その他の行は、標準入力として実行されます。空行、または ` # ' で始まる行はコメントであり、無視されます。
シェルは $HOME ディレクトリから呼び出されます。$TZ の場合と同様に、$SHELL と $HOME のどちらも次の行を記述することで設定できます。
SHELL=/usr/bin/someshell
または
HOME=somedirectory
これによって、別の HOME または SHELL エントリが現れるまで、crontab 内の残りのエントリすべてで優先されます。この呼び出しには、現在有効な $SHELL のベース名の arg0 が使用されます。.profile や同等のファイルを実行するユーザーは、crontab ファイル内でそのことを明示的に指定する必要があります。cron は、HOME、LOGNAME、 SHELL、TZ、PATH を定義し、すべてのシェルのデフォルト環境を指定します。ユーザーの cron ジョブのデフォルト PATH は /usr/bin で、root の cron ジョブのデフォルトは /usr/sbin:/usr/bin です。デフォルトパスは /etc/default/cron 中に設定できます (cron(1M) を参照)。TZ、HOME、および SHELL 環境変数は、その時点で crontab ファイル内で有効なこれらの環境変数に合わせて設定します。
コマンドの標準出力や標準エラー出力をリダイレクトするように指定していないと、生成されたすべての出力またはエラーが、ユーザーにメールで通知されることになります。
次の変数がサポートされています。
代替ディレクトリの選択をユーザーに許可して、コマンドの実行前に cron がディレクトリを変更できるようにします。例:
HOME=/var/tmp
後続のコマンドの実行に使用するシェルの名前。例:
SHELL=/usr/bin/ksh
cron のエントリを実行するタイムゾーンの選択をユーザーに許可します。これは、実行するコマンドの環境と、エントリのタイミングの両方に影響を及ぼします。たとえば、アイスランドのタイムゾーンでエントリを実行するには、次のように指定します。
TZ=Iceland
これらの各変数は、その変数をリセットする後続行によって変数がリセットされるまで、crontab ファイル内の後続行すべてに影響を及ぼします。このため、1 つの crontab ファイル内で複数のタイムゾーンを指定することが可能です。
これらの環境変数を設定しない行は、UNIX 標準に準拠した crontab エントリと同じです。UNIX 標準に準拠した crontab エントリについては、このマニュアルページのほかの部分に記載されています。
cron デーモンのデフォルトタイムゾーンは、cron エントリのシステム全体のタイムゾーンとして設定されます。また、さらに /etc/default/init を使用してシステム全体のデフォルトタイムゾーンとして設定されます。
夏時間や冬時間などが有効になっている場合には、切り替え期間に予定されているジョブは、1 回だけ実行されたり、2 回実行されたり、またはまったく実行されないこともあります。
サポートしているオプションは、次のとおりです。
現在のユーザーの crontab ファイルのコピーを編集します。crontab が存在しない場合は、空のファイルを作成して編集します。編集が終了すると、このファイルがユーザーの crontab ファイルとしてインストールされます。
-e オプションを指定してファイルを編集するときに起動するエディタは、環境変数 EDITOR によって決まります。crontab のジョブを登録するときは、必ず crontab を使用してください。crontab ファイルを直接編集してジョブを追加しないでください。これは、cron はこの方法による変更を認識しないためです。
crontab ファイル内のすべての行を削除すると、古い crontab ファイルが復元されます。すべての行を削除する正しい方法は、-r オプションを使用して crontab ファイルを削除する方法です。
username が指定された場合、 現在のユーザーの crontab ファイルではなく、指定のユーザーの crontab ファイルを編集します。これを行えるのは、root と solaris.jobs.admin 承認を持つユーザーだけです。
crontab を起動したユーザーの crontab ファイルの内容を表示します。-l オプションのあとにユーザー名を指定して、指定のユーザーの crontab ファイルを表示できるのは、root または solaris.jobs.admin の承認を受けているユーザーだけです。
crontab ディレクトリからユーザーの crontab を削除します。r オプションのあとにユーザー名を指定して、指定のユーザーの -crontab ファイルを削除できるのは、root または solaris.jobs.admin の承認を受けているユーザーだけです。
例 1 core ファイルを削除する
平日 (月 - 金) の午前 3 時 15 分に core ファイルを削除する例です。
15 3 * * 1-5 find $HOME -name core 2>/dev/null | xargs rm -f
例 2 誕生日のお祝いを送る
次の例では、誕生日のお祝いメールが送信されます。
0 12 14 2 * mailx john%Happy Birthday!%Time for lunch.
例 3 日付と曜日を同時に指定する
この例では、毎月 1 日と 15 日、さらに毎週月曜日にコマンドが実行されます。
0 0 1,15 * 1
曜日だけ、もしくは日付だけを指定する場合には、もう一方のフィールドに * を指定します。例:
0 0 * * 1
毎週月曜日にコマンドが実行されます。
例 4 環境変数を使用する
次のエントリは、crontab による特定の環境変数のサポートを利用しています。
TZ=GMT HOME=/local/home/user SHELL=/usr/bin/ksh 0 0 * * * echo $(date) > midnight.GMT TZ=US/Pacific 0 0 * * * echo $(date) > midnight.PST TZ=US/Eastern HOME=/local/home/myuser SHELL=/bin/csh
先行するエントリにより、2 つのジョブが実行されます。1 番目は GMT タイムゾーンの午前 0 時に実行され、2 番目は PST タイムゾーンの午前 0 時に実行されます。両方とも、Korn シェルを使用してディレクトリ /local/home/user 内で実行されます。このファイルでは、最終的に TZ、HOME、および SHELL エントリにより、これらの変数がデフォルト値に戻されます。
crontab の実行に影響を与える次の環境変数についての詳細は、environ(5) を参照してください。LANG、LC_ALL 、LC_CTYPE、LC_MESSAGES、および NLSPATH。
-e オプションを指定したときに呼び出すエディタを指定します。VISUAL 環境変数がこの環境変数よりも優先されます。デフォルトのエディタは vi(1) です。
crontab の環境内の PATH には、エディタの検索に使用する検索パスを指定します。
-e オプションを指定したときに呼び出すビジュアルエディタを指定します。VISUAL が指定されていない場合、環境変数 EDITOR で指定されたエディタが使用されます。この設定がされていない場合、デフォルトは vi(1) です。
-e オプションを指定したときに呼び出すエディタを指定します。デフォルトエディタは、/usr/xpg4/bin/vi です。
-e オプションを指定したときに呼び出すエディタを指定します。デフォルトエディタは、/usr/xpg6/bin/vi です。
次の終了ステータスが返されます。
正常終了。
エラーが発生した。
主 cron ディレクトリ
許可されているユーザーのリスト
cron のデフォルト設定を含む
許可されていないユーザーのリスト
アカウンティング情報
crontab のスプール空間
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
|
|
atq(1), atrm(1), auths(1), ed(1), sh(1), vi(1), cron(1M), su(1M), auth_attr(4), attributes(5), environ(5), standards(5)
誤って引数なしで crontab コマンドを入力した場合、CTRL-D を使って処理を中止しないでください。これにより、crontab ファイル内のすべてのエントリが削除されます。処理の中止には、CTRL–C を使用してください。
cron を更新するときには、まず、既存の crontab を調べて、更新時近くにイベントがスケジュールされているかどうかをチェックします。イベントが予定されていた時刻より後に更新プロセスが完了すると、当該エントリが失われる可能性があります。この現象は次のように発生します。ユーザーの crontab ファイルの内部ビューを更新するように crontab から通知されると、cron はまず、既存の crontab ファイルの内部ビューとスケジュールされている内部イベントを削除します。次に、新しい crontab ファイルを読み取って、crontab の内部ビューと内部イベントを構築し直します。この最後の段階には (特に、crontab ファイルが大きいときには) 時間がかかります。既存の crontab エントリが更新時のきわめて近くに予定されていると、予定された時間のあとに最後の段階が完了することがありえます。安全を期すために、新しいジョブは少なくとも現在の日付と時間の 60 秒後に起動するようにしてください。
1 つの crontab ファイルを一度に複数変更すると、予期しない結果になる可能性があります。
TZ、SHELL、および HOME 変数を crontab ファイルに追加する際、これらの変数をデフォルト以外に変更することが想定されていないアプリケーションで crontab ファイルが共有される可能性がある場合は注意が必要です。ファイルの末尾で値をデフォルトにリセットすると、問題が発生する危険を最小限に抑えることができます。