for cygwin†
おきて:cronで実行されるスクリプトは環境変数が設定されていないのでフルパスでかくこと
cron の登録†
cygrunsrv -I cron -p /usr/sbin/cron.exe -a '-D'
この後、マイコンピュータ(右)-> 管理 -> サービス
cron のプロパティ -> ログオン
アカウントをチェックし、「参照」-> 「詳細設定」-> 「今すぐ検索」
自分のアカウントを選択
パスワードを入力
全般タブに戻り、サービス開始
(ユーザとパスワードを入れないと //192.168.0.10/c といった
ネットワークパスが使えないケースがある)
よく失敗する。
1062 はユーザアカウントエラー
1067 はファイルアクセスエラー
(/var/run/cron.pid と /var/log/cron.log を消すこと)
1069 はユーザパスワードエラー(パスワード未設定)
何回やってもだめなときは cygwin をフル削除する
c:\cygwin 削除
レジストリも cygwin と cron で検索してフル削除して
最初からやり直すとうまくいった
$ cat /var/log/cron.log でチェックすべし。
$ ps -eaf
で cron が動いていればOK
(または net start |grep cron)でも可
$ crontab -e
vi で編集。
下手に環境変数の EDITORを emacs などにかえるとはまる
0 * * * * date >> /cygdrive/c/tmp.txt
これで毎時 0時に日付データを tmp.txt に追記する
意味はないけど。
0 * * * * date >> /cygdrive/d/tmp.txt
05 * * * * cron/sync.pl >> /cygdrive/d/tmp.txt
35 * * * * cron/sync.pl >> /cygdrive/d/tmp.txt
batファイル起動†
cron等の batファイルからの起動では「ネットワークドライブの割り当て」→「ログオン時に再接続する」で登録した ドライブ名は使えない。
たとえば n: を \\192.168.0.1\net に割り当ててるとしたら
perlスクリプト中では chdir('\\\\192.168.0.1\\net\\');
のように書く
sshd†
ssh-host-config -y
cygrunsrv -S sshd
emacs /etc/sshd_config
PasswordAuthentication no
ChallengeResponseAuthentication no