▼スレッド
│
└◇63:cronの設定について [Caesar] 02/09 00:42
├◇88:Re:cronの設定について [Kaduo_A] 02/09
│├◇208:Re[2]:cronの設定について [川西] 02/21
││└◇209:Re[3]:cronの設定について [中島] 02/22
││ └◇211:Re[4]:cronの設定について [な] 02/22
││ └◇212:Re[5]:cronの設定について [川西] 02/23
│└◇237:Re[2]:cronの設定について [中島] 02/28
├◇253:Re:cronの設定について [山谷] 03/05
└◇256:Re:cronの設定について [sinba] 03/06
├◇258:Re[2]:cronの設定について [山谷] 03/06
└◇260:Re[2]:cronの設定について [山谷] 03/06
└◇266:Re[3]:cronの設定について [sinbsa] 03/08
└◇267:Re[4]:cronの設定について [山谷] 03/08 <
1つお聞きしたいことがあるのですが、Windows2000上でcronをサービスとしてスレッド一覧
動かしたいと思っていますが、Cygwinの/usr/doc/Cygwin/cron.READMEにある通りに
cygrunsrv -I cron -p /usr/sbin/cron -a -D としてサービスに組み込んで、
一度Windowsのサービスの項目にcronと書かれているのを確認して、
cygrunsrv -S cron としてサービスで動かしてから、crontab -eして設定ファイルを
書きましたが、どうもちゃんと動いていないようなのですが、このほかにすることと
いうのはあるのでしょうか。crontabの書式は他の人にも見てもらって間違いはなかった
ようです。お願いします。
はじめまして。私もはまってしまいました。スレッド一覧
> cygrunsrv -I cron -p /usr/sbin/cron -a -D としてサービスに組み込んで、
> 一度Windowsのサービスの項目にcronと書かれているのを確認して、
> cygrunsrv -S cron としてサービスで動かしてから、crontab -eして設定ファイルを
> 書きましたが
たぶん同じ状態だと思われます。なお、daily.sh単体での動作は確認済みです。
お知恵を貸してください。
crontabの設定
0 * * * * /home/Administrator/analog/logs/daily.sh
イベントビューアのログ
イベントの種類: 情報
イベント ソース: /usr/sbin/cron
イベント カテゴリ: なし
イベント ID: 0
日付: 2001/12/10
時刻: 4:00:00
ユーザー: N/A
コンピュータ: ####
説明:
イベント ID (0) (ソース /usr/sbin/cron 内) に関する説明が見つかりませんでした。リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがローカル コンピュータにない可能性があります。次の情報はイベントの一部です: /usr/sbin/cron : Win32 Process Id = 0x4D0 : Cygwin Process Id = 0x4D0 : (CRON) error (can't switch user context).
イベントの種類: 情報
イベント ソース: /usr/sbin/cron
イベント カテゴリ: なし
イベント ID: 0
日付: 2001/12/10
時刻: 4:00:00
ユーザー: N/A
コンピュータ: ####
説明:
イベント ID (0) (ソース /usr/sbin/cron 内) に関する説明が見つかりませんでした。リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがローカル コンピュータにない可能性があります。次の情報はイベントの一部です: /usr/sbin/cron : Win32 Process Id = 0x4D0 : Cygwin Process Id = 0x4D0 : (Administrator) CMD (/home/Administrator/analog/logs/daily.sh).
始めまして、「cygwinのcronを使う方法」を探しているうちに、こちらのページにたどりつきました。スレッド一覧
cron自体はWindows 2000のサービスとしてちゃんと動いているのを確認したのですが、やはりcrontabで設定した時間に下記のようなエラーが発生して、スケジュールした実行ファイルが動きません。
イベント ID (0) (ソース /usr/sbin/cron 内) に関する説明が見つかりませんでした。リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがローカル コンピュータにない可能性があります。次の情報はイベントの一部です: /usr/sbin/cron : Win32 Process Id = 0x750 : Cygwin Process Id = 0x750 : (CRON) error (can't switch user context).
web上のいろんなサイトをしらべると、faqであるのは間違いなさそうですが、解決策は一切みつかりませんでした。
スレッド一覧
以前、cygrunsrv.exe で、/usr/local/sbin/mhttpd.exe を起動しようとして
うまくいきませんでした。
/usr/local/sbinに cygwin1.dll をコピーするか、樋口様の、svsldr.exe を
使用したらうまくいきました。
どうも cygrunsrv.exe の、システムの環境変数 PATH の認識が変で、
cygwin1.dll を見つけられずに起動に失敗していたような気がします。
いまなら、cygrunsrv.exe に、直接、環境変数 PATH を指定できるみたい
なので、そうしたらうまくいくかもしれません。
以前に、1.1.8 -> 1.3.5 へ上げたときに、システムパスのドライブレターをスレッド一覧
大文字に変えないと('c:\cygwin\bin;...' -> 'C:\cygwin\bin;...') inetd が
起動しないことがありました。
Caster氏、Kaduo A氏 中嶋氏 な氏 皆様ありがとうございました。スレッド一覧
昨日いろいろいじっていたら、スケジュールしたアプリが起動しました。
1)システム環境変数「CYGWIN」を設定した、値は「ntsec」
2)crontabで指定した実行ファイルを「BAT」ファイルではなく、シェルスクリプト(#!/bin/sh)に書き直した。
3)そのシェルスクリプトのファイルを、/usr/local/binに移動した。
4)mkpassd -ld > /etc/group ってやってみた。
NT/2000サーバー上で何かしらのアプリを定期的に自動実行させたいう要望は多いはずですが、Windowsのアプリをcygwinのcronで実行させるには、注意することが多いようです。
お騒がせしてもうしわけありませんでした。
私も確認のため、cygrunsrv で cron を立ち上げてみましたが最初はまりました。スレッド一覧
NTFS で、/home が各ユーザしか読み取りできずスクリプトを実行できずに落ちたり、
Everyone を読み取りのみにしていたのでログを書けずに落ちたりしました。
解決方法は、cron はサービスで動いているのだから、cron が読み書きする
ファイルは、当然、システムが読み書きできる権限が必要です。
なので、念のため、すべてのファイルにシステムにフルコントロールを追加しました。
> > cygrunsrv -I cron -p /usr/sbin/cron -a -D としてサービスに組み込んで、
> > 一度Windowsのサービスの項目にcronと書かれているのを確認して、
> > cygrunsrv -S cron としてサービスで動かしてから、crontab -eして設定ファイルを
> > 書きましたが
>
> たぶん同じ状態だと思われます。なお、daily.sh単体での動作は確認済みです。
> お知恵を貸してください。
>
> crontabの設定
>
> 0 * * * * /home/Administrator/analog/logs/daily.sh
>
とりあえず動作したので参考にして下さい。スレッド一覧
1.環境変数の定義
2.cron 関連コマンドのインストール
"crontab -l"で command not found にならない事を確認する。
command not found ならインストーラーでcron(Admin)、vim(Editor)を導入。
*導入後、再度 "crontab -l"で crontab -l が正しく動作する事を確認する。このとき、/var/cron、/var/cron/tabs が作成される。
3.NTのサービスへの登録
cygrunsrv -I cron -p /usr/sbin/cron -a -D
*念のため、NTのサービスで停止、起動を行って正しく動作することを確認
4.denyファイルを作成
結構、これを忘れている人がいるのでは・・・・。
マニュアルを良くと読むと書いているんですけど、あまりメンテナンスしないファイルなので、つい忘れてしまうみたいです。
$ touch /var/cron/deny
5."$ crontab -e"でテストを行う。
参考例(crontab)
1,5,10,15,20,25,30,35,40,45,50,55 * * * /tmp/test.sh
参考例(/tmp/test.sh)
#!/bin/sh
touch /tmp/TEST.TEST
これで、私の場合はcronが動作しました。
チョット疑問なのが、crontab -e で
0 * * * * /tmp/test.sh
と記述すると、正しく動作しない事が気になっています。
cygrunsrv -I cron -p /usr/sbin/cron -a -D でサービスに組み込まれますが、cygrunsrv -S cron なり net startなりでサービスを起動すると、イベントビューワ上に「情報」として、例のメッセージスレッド一覧
「リモートコンピュータからメッセージを表示するために必要 なレジストリ情報またはメッセージ DLL ファイルがローカ ルコンピュータにない可能性があります。」
が出てしまいます????
サービスとしてきちんと起動していない、ということなのでしょうか?
環境変数、パスの確認、cygwin1.dllの移動、等を行って見ましたが、相変わらずだめです。サービスの登録方法のいろいろ試してみました(svsldr.exeは何処にあるのでしょうか?)。ファイルシステムはFAT32です。何がいけないのでしょうか?サービスとしてきちんと起動できてらっしゃる方はいるのでしょうか?
質問の cygrunsrv -S cron なり net start は、試した事がないのでコメントできませんが、スレッド一覧
『cygrunsrv -I cron -p /usr/sbin/cron -a -D』では Win2000
では問題なく動作しています。
ただ、Win2000 のサービスで正常に起動、停止ができない時
cron が正しくサービスに組み込まれていない可能性が
あるので再組み込みをした方がいいです。
cygwin 上では、『ps -aef』でプロセスを確認して、
下記のようになっている事を確認してみては?
$ ps -aef
UID PID PPID TTY STIME COMMAND
SYSTEM 472 1 ? 11:06:04 /usr/bin/cygrunsrv
SYSTEM 536 472 ? 11:06:09 /usr/sbin/cron
init(1) から cygrunsrv が起動
cygrunsrv(472) から cron が起動
なお、cron サービスを組み込んだ後は、リブートしないと
cron が can't switch user context などというエラーを
イベント・サービスに出力しています。
忘れていたので追加します。スレッド一覧
このメッセージは無視しても影響ないようです。
「リモートコンピュータからメッセージを表示するために必要 なレジストリ情報またはメッセージ DLL ファイルがローカ ルコンピュータにない可能性があります。」
5分間隔で1日中動作させていますが正常に cron が動作し
ていても、前段にこのメッセージが出力されているので
私は無視しています。
cron が正常に動作していても、下記のメッセージになって
います。
-------TOP---------
イベント ID (0) (ソース /USR/SBIN/CRON 内) に関する説明が見つかりませんでした。リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがローカル コンピュータにない可能性があります。次の情報はイベントの一部です: /USR/SBIN/CRON : Win32 Process Id = 0x5C0 : Cygwin Process Id = 0x5C0 : (Administrator) CMD (/tmp/test.sh).
-------BOTTOM-------------
山谷様スレッド一覧
アドバイスありがとうございました。
NTのログばかりに気を取られていました。
動作はしているようです。
しかし「0.5.10.15〜」と記述する動作しないようですね?
同じ現象です。
イベント・ビューの不適切なメッセージは MS だから??スレッド一覧
ところで・・・『0.5.10.15〜』は crontab の記述の
事ですよね?
余りにも幼稚な設定で恥ずかしいのですが・・・
会社でも同様の設定をしていたので変更しましたが、
マニュアルを良く読むと非常に簡単な記述方法がありました。
幼稚な設定
0,5,10,...,55 * * * * /tmp/test.sh
マニュアルを良く読んだ人
0-59/5 * * * * /tmp/test.sh
*これだと、5分を2分にするのも簡単です!!
これもレスの後に気付いた事ですが、サービス(cron)が
システム環境変数を正しく認識するのは Win をリブート後
のようです。 ということで、crontab の記述には問題が
ないようです。