- ベストアンサー
cronでtxt、datなどのファイルを更新するには?
はじめまして、お手数をお掛けいたしますが、どうぞ詳しい方お力添えを宜しくお願い致します! 3時間に一度だけプログラムを実行し、 .datファイルのデータを更新するというのを作成しようとしています。 データの中身は、数字などで、更新するたびに+1ずつ数字を動かしていきたいと思っています。 出来たプログラムを、自分で更新して動かすときちんとデータ更新しているのですが、 cronを設定し、cronから動かすと更新ができていません。 エラーメールを見ると、どうも更新したいdataファイルが読み込めてないようで。 cronを使うのは初めてなのですが、データを読み込んで、そのデータを分割、その内の数値に+1し、また書き込むということはできないのでしょうか? cronの設定は、レンタルサーバ上で出来るので、そちらで設定しています。 コマンドは /home/アカウント/www/○/○/cgi/○/time.cgi と、cgiの場所までを記述し、 時刻は * * */3 0 となっているハズと思います(コンパネからの設定なのでなんとも…) どうぞご教授くださいませ…!
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
スクリプトの中のどこにもチェンジディレクトリが行われていませんが。 data.datを絶対パス名で書くか、チェンジディレクトリを行う必要があるのでしょう。
その他の回答 (1)
- moon_night
- ベストアンサー率32% (598/1831)
データファイルのパーミッションはあっていますか?
補足
パーミッションは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); ****************** 途中の数式はあまり関係ないとは思いますが、もしこちらが原因になったらと思い、載せたままにしております; 初心者組み立てなので、もしかしたらこちらに不備が、あったり、するのでしょうか(あわわ)
お礼
cd で移動させて、ディレクトリを指定したら今度はうまくいきました! なんだか試したときにちょっと間違えて記述していたようです。 どうもありがとうございました!
補足
あ…やっぱりそこになるのですね; この場合、ディレクトリはどこになるのでしょうか? 一応そうかなぁ、と思って、ちょっと色々試してみたのですが、 /home/アカウント/www/○/○/cgi/○/data.datとしてみたり、 http://から指定してみたのですが、ダメでした; もしくはチェンジディレクトリなのですが、 cgiの方で指定するのでしょうか? 色々と検索してみた中で、コマンドの設定時、頭にcdをつけてディレクトリを指定するとあったので実行してみたのですが、ちょっとうまくいかなくて; (cd /home/アカウント/www/○/; ./○/cgi/○/time.cgiとしてみました) 多分レンタルサーバ側の指定で一時間に一度までしか設定できなくなっているみたいなので、確認が一時間ごとしかできません。 なので、ちょっと結果の返答が遅れてしまうかもしれず 申し訳ありませんが、どうぞご助力くださいませ;