最近の更新履歴

Cygwinで各種サービスの構築

Cron

cronデーモンはジョブ(スクリプト)を自動実行するためのデーモンプロセス。Windowsでいうところの「タスク」に相当するもの。

パッケージのインストール

インストール時にすべてを選択していれば、すでにインストールされているはず。もし、インストールされていない場合は「setup.exe」を実行し、カテゴリ「Admin」の中から「cron」をインストールする。
インストールされているかどうのチェックは「cygcheck」で行う。
$cygcheck -c cron

サービスのインストール

サービスとしてインストールするためにconfigを設定する。質問には適当に答えていく。
$cron-config

Do you want to install the cron daemon as a service? (yes/no) yes
・・・
Enter the value of CYGWIN for the daemon: [ntsec smbntsec] ntsec smbntsec
・・・
Do you want to the cron daemon to run as yourself? (yes/no) no
・・・
Do you want to continue anyway? (yes/no) yes
・・・
Do you want to start the cron daemon as a service now? (yes/no) yes

サービスの確認

サービスとしてインストールされたかどうかを確認する。確認にはcygwin側からは「cygrunsrv」コマンドを使って確認することができる。
$cygrunsrv -Q cron
Service : cron
Display name : Cron daemon
Current State : Running
Controls Accepted : Stop
Command : /usr/sbin/cron -n
「Current State」がRunningになっていればOK。
Windows側からは「管理ツール」→「サービス」で「Cron daemon」が登録されていて、状態「開始」スタートアップの種類:「自動」になっていればOK。

またcronのイベントログから動作を確認することもできる。
$cronevents
2008/06/26 20:07:44 [SYSTEM] /usr/sbin/cron: PID xxxx: (CRON) STARTUP (V5.0)
2008/06/26 20:07:45 [SYSTEM] cron: PID xxxx: `cron' service started

Cronの設定

ジョブの設定は「crontab」コマンドから行う。
$crontab [ -l | -r | -e ]

-l オプションは、現在の crontab を標準出力へ表示させる。

-r オプションは、現在の crontab を削除する。

-e オプションは、環境変数 VISUAL もしくは EDITOR で指定されているエディターを使って、現在の crontab を編集するのに使われる。
編集終了後、変更された crontab は自動的にインストールされる。
crontabでの書式
分 時 日 月 曜日 コマンド
各フィールドで使用できる値の範囲
 フィールド
 分  0~59
 時  0~23
 日  1~31
 月  1~12
 曜日  0~7 [0,7は日曜日]
 コマンド  Bourne Shellの書式に従って記述

各フィールドでの値の範囲の指定方法
 指定方法  サンプル
 コメント
 リスト  0,1,5  カンマ区切りで複数を指定
 範囲  1-5  ハイフンを使って範囲を指定
 間隔値  1-5/2  範囲の中を指定した間隔で指定
 共存  1-5/2.8  組み合わせて指定
 すべて  *  範囲すべてを指定

crontabの設定サンプル
# (/etc/passwd の指定に関らず) コマンド実行に /bin/sh を使用する。
SHELL=/bin/sh
# (この crontab の所有者に関らず) あらゆる出力を `xxxx' にメールする。
MAILTO=xxxx
# メールをしない
MAILTO=""

# 毎日 0:05に実行する
5 0 * * * /bin/xxxxx
# 5分おきに実行する
*/5 * * * * /bin/xxxxx
# 1時、3時、9時から12時の05分に実行する
5 1,3,9-12 * * * /bin/xxxxx
# 1時、3時、5時の0分に実行する
0 1-5/2 * * * /bin/xxxxx
# 月曜日の3時に実行する
0 3 * * 1 /bin/xxxx

SSH


FTP