cron
http://homepage1.nifty.com/cra/linux/cron.html
http://www.amy.hi-ho.ne.jp/tachibana/cygwin/cron.html(cron の設定)
http://sonic64.com/2004-06-23.html(cygwin で cron を使う)
DESC
cron とは、ジョブ(スクリプト)を自動実行するためのデーモンプロセスです
crontab コマンドはUnix系OSにおいて
コマンドの定時実行のスケジュール管理をしたりする
標準入力からコマンド列を読み取り crontab というファイルに保存
cron という名称はギリシア語のクロノス (χρ?νο?)に由来
一般にcrontabコマンドで編集されたスケジュール内容は、
crond デーモンにより実行される。crondはバックグラウンドで稼動し
毎分ごとに実行すべきスケジュールがないか確認し、もし実行すべきジョブがあれば
それを実行する。このジョブは「cron job」とも呼ばれる。
自分で常駐 Thread を用意しておけばこのようなことも可能.
WindowsService.に登録する
// -D は cron.exe の Argument
cygrunsrv -I cron --path /usr/sbin/cron --args -D
cygrunsrv -R cron
cygrunsrv -Q cron
cygrunsrv --query cron
Service : cron
Current State : Running // 動いてる !
Controls Accepted : Stop
Command : /usr/sbin/cron -D
下準備
1. Cygwin を Full-Intall する
2. サービス > cron を起動
( 本体は D:\cygwin\bin\cygrunsrv.exe )
Job.を登録する
場所は
/usr/sbin/cron.exe
ファイルは
/etc/crontab
設定方法
crontab -e
編集ファイルには
SYNTAX
Minute Hour Day Month Week Command
DESC
時刻 と 処理 を登録する
各行はそれぞれ1タスクになる
Minute : 0-59
hour : 0-23
day : 1-31
month : 1-12 (or names, see below)
week : 0-7 (0 or 7 SUN
1 : MON
2 : TUE
...
チェック用の Job としては
* * * * * /bin/date >>/tmp/foobar.txt
export EDITOR=/usr/bin/emacs
crontab -l
crontab -r;
cat /var/log/cron.log
例
0 3 1 10 * /usr/local/bin/hoge.sh
0 2 * * * /usr/local/bin/hoge.sh
0 5 1 * * /usr/local/sbin/hoge.sh
0 */2 * * * /usr/local/bin/hoge.sh
*/1 * * * * /work/foo.sh
*/15 * * * * /work/foo.sh
* * * * * /work/shellscript/kawase.sh
55 23 * * * /work/shellscript/cronjob.sh
* * * * * /work/shellscript/cronjob.sh
0 * * * * cp -auR /cygdrive/c/usr/work/* /home/kaz/backup/
0 2 * * * /usr/local/bin/hoge.sh
詳細な.Command.を登録するのは手間なのでxxx.sh.を呼び出す
* * * * * /work/cronjob.sh
date >> /work/foo.txt
date >> /work/bar.txt
/work/shellscript/foo.sh
問題点
PATH がとおっていない ?
BAD
job.sh
OK
/work/shellscript/job.sh
cygrunsrv -I cron -p /work/shellscript
簡単なJobを登録してテスト
1 分おきに 時間をかきこむ Job
bash> crontab -e;
* * * * * date >> /dust/crontest.txt
bash> crontab: installing new crontab