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 # cronが動いているかテスト cygrunsrv --query cron # RET 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 編集ファイルには # comment です # 最後に改行をいれるといいかも # min hour day month week command # [*] WildCard 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 としては # 1 分ごとに 日付を書き込む * * * * * /bin/date >>/tmp/foobar.txt # vi が嫌なら使いたい Editor を指定する export EDITOR=/usr/bin/emacs # 登録内容をチェック crontab -l # Job を消す crontab -r; # Log を見る cat /var/log/cron.log



# 指定 (10/1 3:00) に hoge.sh を実行 0 3 1 10 * /usr/local/bin/hoge.sh # 毎日 2時 0 2 * * * /usr/local/bin/hoge.sh # 月初めの5時 0 5 1 * * /usr/local/sbin/hoge.sh # 2 時間ごと 0 */2 * * * /usr/local/bin/hoge.sh # [*/N] で N ごと ( Step値指定 ) # [*] は wildcard # 1分ごと */1 * * * * /work/foo.sh # 15分ごと */15 * * * * /work/foo.sh # 毎分 * * * * * /work/shellscript/kawase.sh # 毎晩 23:55 55 23 * * * /work/shellscript/cronjob.sh * * * * * /work/shellscript/cronjob.sh # 1時間に1回 コピー 0 * * * * cp -auR /cygdrive/c/usr/work/* /home/kaz/backup/ # 毎日 2時に 0 2 * * * /usr/local/bin/hoge.sh



詳細な.Command.を登録するのは手間なのでxxx.sh.を呼び出す


* * * * * /work/cronjob.sh
# Shell Script をすきに記述 # foo.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 # Edit する bash> crontab -e; # EDITOR が起動するので 入力して保存 # WARNING # 最後に [\n] を忘れずに * * * * * date >> /dust/crontest.txt # Install 成功 bash> crontab: installing new crontab