クーロンで二つのバッチをスケジュールしてるのですが
 二つ目のバッチが動きません。 
 なにが原因なのでしょうか? 

** cron_file の変更** 

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.18554 installed on Tue Apr 4 13:15:59 2000)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
0 0 * * * /u02/oradata/bat/A001.bat > /u02/oradata/bat/A001.log
0 * * * * /u04/tanaka1/bat/B001.bat > /u04/tanaka1/bat/B001.log

  * /u04/tanaka1/bat/B001.bat が 動かない

   B001.bat は chmod 777 で実行権限を付与
   
   $ B001.bat と 打つと

   コマンドが見つからない と エラーメッセージが出ます。

   一つ目のバッチは A001.log のタイムスタンプから動作してると思われます。    

このQ&Aに関連する最新のQ&A

A 回答 (5件)

crondは、実行したコマンドが(標準出力または標準エラー出力に)何らかの出力した場合、その内容をコマンド実行ユーザにメールします。



質問のcrontabだとstderrがリダイレクトされてないので、エラーがメールされてると思われます。メール配送システムが使えればですが。
crondからメールが届いてないか確認するか、stderrをファイルにリダイレクトしてみては。

参考URL:http://www.itmedia.co.jp/help/tips/linux/l0388.h …
    • good
    • 0
この回答へのお礼

bat/B001.bat 1>STD.LOG 2>ERR.LOG

と 書けば

標準出力も
エラー出力も
ファイル化されるので

デバッグしやすいって事ですね。

お礼日時:2005/04/21 20:05

> telnetで


> /u04/tanaka1/bat/B001.bat
> と打つと動作しますが

スクリプト自体は正常に動作するようですね。

> クーロンに組み込むと途中で
> 止まってるようです。

と言うことになるとtelnetでログインして実行した環境とcronで実行した時の環境の違いにより正常に動作しなくなるようですね。

この途中で止まっているというのはエラーになって終了、もしくはスクリプトに記述したコマンドが動作したままだんまりのどちらでしょうか?
エラーになるのでしたら、エラーメッセージが出力されていれば、そのエラーメッセージからどうすればいいかが分かるかもしれません。

ちなみにtelnetでログインして実行した時のユーザは、cronに登録した時のユーザと同一ユーザでしょうか、それとも別なユーザでしょうか?
(たぶん、結果からすると別ユーザでしょうかね)

cronに登録した時のユーザで同様にスクリプトファイルを実行するとcronで実行した時と同じく途中で止まりますか?

この回答への補足

>ちなみにtelnetでログインして実行した時のユーザは、cronに登録した時のユーザと同一ユーザでしょうか、
>それとも別なユーザでしょうか?

同一ユーザです。

補足日時:2005/04/21 22:29
    • good
    • 0

>$ B001.bat と 打つと



>   コマンドが見つからない と エラーメッセージが出ます。

これは、No.1の方も書いている通り、コマンドのサーチパス(環境変数PATH)に「B001.bat」が存在するディレクトリが無かっただけでは?

確認したかった事はcrontabに書いてあるように

# /u04/tanaka1/bat/B001.bat

と実行した場合には正常に動作するのかどうかという事です。

この回答への補足

>確認したかった事はcrontabに書いてあるように
># /u04/tanaka1/bat/B001.bat
>と実行した場合には正常に動作するのかどうかという事です。

 telnetで
 /u04/tanaka1/bat/B001.bat
 と打つと動作しますが

 クーロンに組み込むと途中で
 止まってるようです。

補足日時:2005/04/21 19:41
    • good
    • 0

cronでcrontabで設定した内容が実行されたかは、cronのログ/var/log/cronを見れば分かります。


以下のようなログが残っていれば、cronからは起動されたという事です。

○/var/log/cronの出力例
 「/bin/date > /tmp/LOG」をユーザrootで実行した場合
-------8<-------8<-------8<-------8<-------8<-------
Apr 16 15:41:01 FedoraCore3 crond[4918]: (root) CMD (/bin/date > /tmp/LOG)
-------8<-------8<-------8<-------8<-------8<-------

もしcronのログから「B001.bat」が起動されており、標準出力に何らかの出力があるのに標準出力をリダイレクトしたファイルに何も出力されていない場合、指定した「B001.bat」に問題があるとしか思えません。

No.2の方が書かれているようにcronからのメールがないか確認するか、標準エラー出力をファイルにリダイレクトして確認した方がいいでしょうね。

ところで、指定した「B001.bat」は、cronで実行させようとしているユーザ(crontabコマンド実行時のユーザ)でそもそも正常に動作する事は確認しているのでしょうか?

P.S.
この質問に関連すると思われる質問をしていらっしゃると思いますが。
それらについて出来れば質問の内容が解決したのなら質問を締め切ってもらえないでしょうか?
解決したのかしていないのか反応がないため分からないので。

この回答への補足

>ところで、指定した「B001.bat」は、cronで実行させようとしているユーザ(crontabコマンド実行時のユーザ)で
>そもそも正常に動作する事は確認しているのでしょうか?

$ B001.bat と 打つと

   コマンドが見つからない と エラーメッセージが出ます。

質問自体は自宅で
動作確認は会社でやってるので
この質問に対する結果は
4月18日(月)にならないと分かりません。

補足日時:2005/04/16 18:30
    • good
    • 0

$ B001.bat



でコマンドがないエラーとなるのは、カレントディレクトリにパスがないからではありませんか?その実行ファイルのあるディレクトリで

$ ./B001.bat

でもダメでしょうか。

cronが動かないのはちょっと理由がわかりませんが、/var/log/message(あるいは何らかのログ)にcrondからのログが出ていると思いますので、それを見たら何か手がかりがあるかもしれません。

この回答への補足

$ ./B001.bat

で動きました。

/var/log/message

は現在のユーザーでは
アクセス権限がありませんでした。

補足日時:2005/04/22 18:40
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q環境変数PATHをスクリプトかバッチから設定する方法

社内研修の準備のために、何台ものパソコン(Windows XPを想定)のセットアップを
行うことがありまして、
・ZIPファイルの展開
・展開後フォルダを特定の場所へ配置
・環境変数JAVA_HOMEとPATHの変更
などをバッチやJavaScriptを利用して自動的に処理させようと
しています。ZIPの展開と配置は解決できたのですが、
環境変数(pathなど)をスクリプトかバッチから設定できないでしょうか?

JavaScript(またはVBスクリプト)で次のように記述すると、
一見うまくいったように見えるのですが、レジストリが書き換わるだけで、
再起動しないとpathが有効になりませんでした。(スクリプト実行後に開いた
コマンドプロンプトで echo %path% をしても反映されていない。)

<setenvion.js>
var shell = WScript.CreateObject("WScript.shell");
shell.RegWrite("HKEY_CURRENT_USER\\Environment\\path",
"C:\\Program Files\\Java\\jdk1.6.0_06\\bin",
"REG_EXPAND_SZ");

googleで検索しても、バッチを実行するためにpathを設定しましょう、みたいな
情報しか見つからないので、質問させていただきました。
上記のスクリプトでも再起動すれば反映されるのでその点我慢すればよいのですが、
なにかよい方法をご存知の方、よろしくお願いします。

社内研修の準備のために、何台ものパソコン(Windows XPを想定)のセットアップを
行うことがありまして、
・ZIPファイルの展開
・展開後フォルダを特定の場所へ配置
・環境変数JAVA_HOMEとPATHの変更
などをバッチやJavaScriptを利用して自動的に処理させようと
しています。ZIPの展開と配置は解決できたのですが、
環境変数(pathなど)をスクリプトかバッチから設定できないでしょうか?

JavaScript(またはVBスクリプト)で次のように記述すると、
一見うまくいったように見えるのですが、レジスト...続きを読む

Aベストアンサー

スクリプトでもバッチでも

http://www.atmarkit.co.jp/fwin2k/win2ktips/460envset/envset.html
http://www.atmarkit.co.jp/fwin2k/win2ktips/1003setx/setx.html

Q/var/log/boot.logとdmesgの違い

表題の違いがわかりません。
どなたか教えていただけませんでしょうか?

Aベストアンサー

そもそもboot.logとdmesgはファイルとコマンドなんですけど
そこは意図を汲んで・・・

【dmesg】
こいつはリング「バッファ」に書いている内容を古いものから順に読み出していくコマンドです。なので、再起動したら前のログデータは消えます。
起動時から読み込んだデータ量がバッファの限界を超えると、バッファ上の最古データが上書きされます。
書き込み先は/proc/kmsgなはず。
データ内容は起動らへん"からの"(←ここポイント)のメッセージ+αです。

【boot.log】
そのまんま起動時のカーネルメッセージが記録されます
で、これはログ「ファイル」に書き込まれています。
再起動しても残ってます。(でもboot.logって名前ではないかも)
書き込み先は/var/log/syslog.confの内容を見れば分かるはずです。
起動時のメッセージはboot.logに書き込めという設定があるはずです。多分。

上記の言葉でググるといいかも

参考URL:http://www.linux.or.jp/JM/html/util-linux/man8/dmesg.8.html

そもそもboot.logとdmesgはファイルとコマンドなんですけど
そこは意図を汲んで・・・

【dmesg】
こいつはリング「バッファ」に書いている内容を古いものから順に読み出していくコマンドです。なので、再起動したら前のログデータは消えます。
起動時から読み込んだデータ量がバッファの限界を超えると、バッファ上の最古データが上書きされます。
書き込み先は/proc/kmsgなはず。
データ内容は起動らへん"からの"(←ここポイント)のメッセージ+αです。

【boot.log】
そのまんま起動時のカーネルメ...続きを読む

Qバッチファイルで、あるスクリプトがエラーになっても、つぎのスクリプトを実行させたい

バッチファイルで、あるスクリプトがエラーになっても、つぎのスクリプトを実行させたいと考えています。
具体的には、
■call.bat■
******************
call 1.bat
call 2.bat
******************


■1.bat■
******************
mkdir test1
******************

■2.bat■
******************
mkdir test2
******************

の3つのバッチファイルで、1.batがエラーになっても
2.batを実行させたいと考えています。
どうしたらいいのでしょうか。

よろしくお願いします。

Aベストアンサー

>1.batが終了しなくても、
>2.batを実行させたいと考えています。

なるほど。簡単そうに出来るのは
start cmd /C 1.bat
start cmd /C 2.bat
ですかね。

Q/var/log/messagesでプライオリティをlogに残す方法はあるでしょうか?

Solarisのmessagesにはエラーのレベル(crit,error,warn)などがログメッセージに記載あsれているのですが、/var/log/messagesでプライオリティをエラーメッセージとともにlogに残す方法はあるでしょうか?

Aベストアンサー

syslogdに関連するリファレンスを見て、オプションや設定ファイルで設定にプライオリティを出力するようなものがなければそのsyslogdではたぶん無理でしょう。
CentOSのsyslogdは、ソースをじっくり見たわけではないですがソースコード上は設定でプライオリティはメッセージに含めるような事はないように見えました。

どうしてもという場合はご自分でプライオリティを出力するsyslogdを探すか、ソースがあるのですからご自分で修正するかですかね。

Qcmdの起動時におけるバッチスクリプトの自動実行

こんにちは。

OSは現在、64bit版のWindows7を使っています。
コマンドプトンプト(C:\Windows\System32\cmd.exe)の実行時に、
自動で実行するバッチスクリプトを設定するには、
レジストリキーの
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
に、AutoRunという文字列値を作成し、そのデータに、バッチスクリプトのパスを記述します。
以前までこの方法で、
C:\Users\kei\cmdprofile.bat
というバッチスクリプトが、コマンドプロンプトの起動時に呼び出されるように設定していました。
最近、これを実行しないようにしようと思い、
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
に、AutoRunという文字列値を削除しました。
ところが、依然と同じように、C:\Users\kei\cmdprofile.batが、コマンドプロンプトが起動する度に実行されてしまいます。
そこで、バッチスクリプトの名前をprofile.batに変更してコマンドプロンプトを起動させた所、
「C:\Users\kei\cmdprofile.bat は存在しない」
といったエラーメッセージが表示されました。
どうやら、C:\Users\kei\cmdprofile.batを自動実行する設定が解除されていないようなんです。
一体どうすれば、このバッチスクリプトの自動実行を解除する事ができるのでしょうか?

何か御存じの方がいらっしゃれば、是非、情報を提供して頂きたく思います。
では、よろしくお願い致します。

こんにちは。

OSは現在、64bit版のWindows7を使っています。
コマンドプトンプト(C:\Windows\System32\cmd.exe)の実行時に、
自動で実行するバッチスクリプトを設定するには、
レジストリキーの
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
に、AutoRunという文字列値を作成し、そのデータに、バッチスクリプトのパスを記述します。
以前までこの方法で、
C:\Users\kei\cmdprofile.bat
というバッチスクリプトが、コマンドプロンプトの起動時に呼び出されるように設定していました。
最近、これを実...続きを読む

Aベストアンサー

ANo2です。

激動たる俺RegEdit改でも通常のRegeditでもOKですがAutRunではなく
パスの記述 C:\Users\kei\cmdprofile.bat
を検索してみてはいかがでしょうか?

Q/var/log/cronについて

間違えて
vi /var/log/cron
をして編集して上書き保存していましました。

それ以降cronの実行ログが残りません。
ログが出力されるように対処法を教えてください。

Aベストアンサー

ディストリビューションは?

パーミッションか所有ユーザーが変わってしまったとか?
syslogdとか再起動してみるとか……。

Qバッチかスクリプト

こんにちは、早速ですがある共有フォルダ内にあるフォルダやファイルを一発で消せるバッチ又はスクリプトの書き方を教えてください(もちろんアクセス権は有効である条件のもとで)。ちなみにOSはNT4.0です。

Aベストアンサー

こんにちは、honiyonです。

 ありゃ、ほんとですね(^^;

 では、rmdir を使用しましょう。

  rmdir /s [DIR名]

 とします。
 削除確認のメッセージを表示させない場合は、更に /q を付け足せばOKです。
 ヘルプは、rmdir /? で出ます。

 今度はフォルダが消えている事を確認出来ました。(Win2000の場合)

 参考になれば幸いです(..

Q/var/log/maillog について

Red Hat Linux 8.0とsendmailとqpopperを使用してメールサーバーを構築しています。
/var/log/maillogに1時間に一回、200行ほどのログが一気に書き込まれ
ログの容量が肥大化して困っています。
ログの一部は
Feb 6 21:14:01 xxxx sm-msp-queue[680]: h15L4fBd004705: to=root, delay=15:09:16, xdelay=00:03:09, mailer=relay, pri=121617, relay=[localhost] [1.0.0.127], dsn=4.0.0, stat=Deferred: Connection timed out with [localhost]
Feb 6 21:14:01 xxxx sm-msp-queue[680]: h15L4fBe004705: to=root, delay=15:09:15, xdelay=00:00:00, mailer=relay, pri=121617, relay=[localhost], dsn=4.0.0, stat=Deferred: Connection timed out with [localhost]
Feb 6 21:14:01 xxxx sm-msp-queue[680]: h15L4fBf004705: to=root, delay=15:09:15, xdelay=00:00:00, mailer=relay, pri=121617, relay=[localhost], dsn=4.0.0, stat=Deferred: Connection timed out with [localhost]
Feb 6 21:14:01 xxxx sm-msp-queue[680]: h15L4fBg004705: to=root, delay=15:09:15, xdelay=00:00:00, mailer=relay, pri=121617, relay=[localhost], dsn=4.0.0, stat=Deferred: Connection timed out with [localhost]
Feb 6 21:14:01 xxxx sm-msp-queue[680]: h15L4fBh004705: to=root, delay=15:09:15, xdelay=00:00:00, mailer=relay, pri=121617, relay=[localhost], dsn=4.0.0, stat=Deferred: Connection timed out with [localhost]
Feb 6 21:14:01 xxxx sm-msp-queue[680]: h15L4fBi004705: to=root, delay=15:09:14, xdelay=00:00:00, mailer=relay, pri=121617, relay=[localhost], dsn=4.0.0, stat=Deferred: Connection timed out with [localhost]

このような感じです。どすれば止まるでしょうか?
困っています、教えて頂けませんか。
(xxxxは自分の設定したドメインの頭です xxxx.ne.jp)

Red Hat Linux 8.0とsendmailとqpopperを使用してメールサーバーを構築しています。
/var/log/maillogに1時間に一回、200行ほどのログが一気に書き込まれ
ログの容量が肥大化して困っています。
ログの一部は
Feb 6 21:14:01 xxxx sm-msp-queue[680]: h15L4fBd004705: to=root, delay=15:09:16, xdelay=00:03:09, mailer=relay, pri=121617, relay=[localhost] [1.0.0.127], dsn=4.0.0, stat=Deferred: Connection timed out with [localhost]
Feb 6 21:14:01 xxxx sm-msp-queue[680]: h15L4fBe004705: to...続きを読む

Aベストアンサー

localhostを理解されていないかと思います。
/etc/hostsは

192.168.0.3 xxxx.ne.jp
127.0.0.1 localhost.xxxx.ne.jp localhost

とすべきです。場合によっては、
::1 localhost.xxx.ne.jp localhost
を追加してみてください。

ところで、xxx.ne.jpはプライベートのようですが、それでいいのでしょうか?

Qバッチスクリプトについて

現在OSはXPを使用しています。

iPodビデオを作る際、音量がファイル枚に不均一のため、Sound Engine Free ver.2.96bのオートマキシマイズで均一化をしてます。
ちなみに13dBに設定してます。

wavファイルの読み込みでプログラムがwavを読んで波形が出るところまでのスクリプトなら書けるのですが、
変換するファイル数が膨大にあるため、読み込みの後、オートマキシマイズで均一化、変更の保存、プログラム終了まで自動で行うバッチスクリプトが書きたいのですが、検索してもいまいち分かりませんでした。
どなたかご教授願います。
手動でやるしかないなら諦めて1ファイルずつ変換していきます…。

Aベストアンサー

ハードリンクというのは「既存のファイルに対する別名」です. つまり, 「別名」を作ることで 1つのフォルダにすべてのファイルを集めてしまい, そのフォルダに対して Foler Open などを使ってやろうという趣旨です.
以下, すべてはコマンドプロンプトで実行することになります:
[注意]
実際に実行するとファイルを破壊してしまったりするかもしれません. 特に, ハードリンクを作ったり削除したりすることになるので, 「元のファイルが変更できていない」「元のファイルごと削除してしまった」などの問題が発生する可能性は否定できません. あらかじめバックアップをとるなどして「壊れてしまっても大丈夫」という状況にしてから実行することをお勧めします.
[注意終わり]
まず,
for /r d:\ipod %f in (*.wav) do echo %f
とやると「d:\ipod 以下にあるすべての wav ファイル」が表示されるはずです.
そこで, (fsutil を実行するので管理者権限が必要かもしれません) 以下のコマンドを順次実行します:
d:
cd \
mkdir hogehoge
cd hogehoge
cmd /v:on
set i=1
for /r d:\ipod %f in (*.wav) do fsutil hardlink create "%f" !i!.wav & set /a i=!i!+1
この時点で, d:\ipod にあるすべての wav ファイルに対し, カレントフォルダ (d:\hogehoge) の中にハードリンクが作られます.
そこで, SoundEngine のスクリプトから Folder Open などを使って「カレントフォルダにあるすべての wav ファイル」をオートマキシマイズします. これで, 原理的には「d:\ipod 以下にあるすべての wav ファイルに対してオートマキシマイズした」のと同じ結果になっているはずです.
あとは
del *.wav
cd ..
rd hogehoge
exit
で証拠隠滅.
上の [注意] でも書きましたが, ここで「ファイルの削除」を行っているため最悪の場合「元のファイルをすべて消してしまった」ということになるかもしれません. 私は試していないので, 「これでいける」とまではいえません. ファイルの少なそうなフォルダをコピーしておき, そのコピーに対して同じようなことをして「ちゃんと動いている」ことを確かめてから本来の対象に対して実行することを強くお勧めします.

ハードリンクというのは「既存のファイルに対する別名」です. つまり, 「別名」を作ることで 1つのフォルダにすべてのファイルを集めてしまい, そのフォルダに対して Foler Open などを使ってやろうという趣旨です.
以下, すべてはコマンドプロンプトで実行することになります:
[注意]
実際に実行するとファイルを破壊してしまったりするかもしれません. 特に, ハードリンクを作ったり削除したりすることになるので, 「元のファイルが変更できていない」「元のファイルごと削除してしまった」などの問題が発生...続きを読む

Q/var/log/以下に保存されているログ

OSはred hatです
/var/log/以下にメールログや、cronのログなど多くのログが保存されていますが、これらはどこで設定されて毎日ローテートされて、どのタイミングで削除されていくのでしょうか。
設定などはどこで行っているのでしょうか。

Aベストアンサー

参照しているシステムがDebianなので少々dirが異なるかと思いますが、/etc/cron.daily/logrotateにて更新されます。

何時に実行されるかは、/etc/crontabのcron.dailyが実行する時刻を参照してください。
設定は、/etc/logrotate.confで行います。

詳細は、man logrotateを参照してください。


人気Q&Aランキング