重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

はじめまして、お手数をお掛けいたしますが、どうぞ詳しい方お力添えを宜しくお願い致します!

3時間に一度だけプログラムを実行し、
.datファイルのデータを更新するというのを作成しようとしています。
データの中身は、数字などで、更新するたびに+1ずつ数字を動かしていきたいと思っています。

出来たプログラムを、自分で更新して動かすときちんとデータ更新しているのですが、
cronを設定し、cronから動かすと更新ができていません。
エラーメールを見ると、どうも更新したいdataファイルが読み込めてないようで。
cronを使うのは初めてなのですが、データを読み込んで、そのデータを分割、その内の数値に+1し、また書き込むということはできないのでしょうか?

cronの設定は、レンタルサーバ上で出来るので、そちらで設定しています。
コマンドは
/home/アカウント/www/○/○/cgi/○/time.cgi
と、cgiの場所までを記述し、
時刻は * * */3 0 となっているハズと思います(コンパネからの設定なのでなんとも…)


どうぞご教授くださいませ…!

A 回答 (2件)

スクリプトの中のどこにもチェンジディレクトリが行われていませんが。


data.datを絶対パス名で書くか、チェンジディレクトリを行う必要があるのでしょう。

この回答への補足

あ…やっぱりそこになるのですね;
この場合、ディレクトリはどこになるのでしょうか?

一応そうかなぁ、と思って、ちょっと色々試してみたのですが、

/home/アカウント/www/○/○/cgi/○/data.datとしてみたり、
http://から指定してみたのですが、ダメでした;

もしくはチェンジディレクトリなのですが、
cgiの方で指定するのでしょうか?
色々と検索してみた中で、コマンドの設定時、頭にcdをつけてディレクトリを指定するとあったので実行してみたのですが、ちょっとうまくいかなくて;
(cd /home/アカウント/www/○/; ./○/cgi/○/time.cgiとしてみました)


多分レンタルサーバ側の指定で一時間に一度までしか設定できなくなっているみたいなので、確認が一時間ごとしかできません。
なので、ちょっと結果の返答が遅れてしまうかもしれず
申し訳ありませんが、どうぞご助力くださいませ;

補足日時:2006/08/14 13:01
    • good
    • 0
この回答へのお礼

cd で移動させて、ディレクトリを指定したら今度はうまくいきました!
なんだか試したときにちょっと間違えて記述していたようです。
どうもありがとうございました!

お礼日時:2006/08/14 18:05

データファイルのパーミッションはあっていますか?

この回答への補足

パーミッションは666になってるので、多分大丈夫だと思います。
念のため、cgiのソースの方も。
*****************
$data = "data.dat";

open (IN,"$data") || &error("ファイルが開けません");
$lines = <IN>;
close (IN);

($count,$day,$week,$ahb,$ap,$timeset,$time,$last) = split(/,/, $lines);

$timeset=$timeset+1;

if($timeset == 24){$timeset = 0; $count++; $day++;}
if($timeset < 12){$ap = "A";}else{$ap="P";}

if($timeset >12){$time=$timeset-12;}else{$time=$timeset;}


@new = "$count,$day,$week,$ahb,$ap,$timeset,$time,$last";


open (LINES,">$data") || &error("dataファイルが開けません。");
print LINES (@new);
close (LINES);

******************
途中の数式はあまり関係ないとは思いますが、もしこちらが原因になったらと思い、載せたままにしております;
初心者組み立てなので、もしかしたらこちらに不備が、あったり、するのでしょうか(あわわ)

補足日時:2006/08/14 10:49
    • good
    • 0

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

今、見られている記事はコレ!