• 締切済み
  • 暇なときにでも

crontabの書式について

レンタルサーバーで運用しているWebサイトで初めてcronを使うことになり、現在以下のcrontabで正常に動作しているのですが、 このcrontabを「出力はresultに保存(常に上書き)、成功にせよエラーにせよメールは送信しない」という設定に変えるにはどうすればよいでしょうか。 #!/bin/sh cd /virtual/[myID]/cron/ wget http://sample.com/test.php

共感・応援の気持ちを伝えよう!

  • Linux系OS
  • 回答数1
  • 閲覧数106
  • ありがとう数2

みんなの回答

  • 回答No.1
  • yambejp
  • ベストアンサー率51% (3827/7415)

標準出力・標準エラー出力をresult(?)にリダイレクトしてやればいいでしょう。 この場合標準出力がなければメール送信もしないとおもいます。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。

関連するQ&A

  • cronのシェルスクリプトで特定のファイルを時間差で実行したい

    現在、下記内容を記述したシェルスクリプトを使っています。 #!/bin/sh cd /virtual/web/ wget test1.php -O result wget test2.php -O result wget test3.php -O result exit test1.php、test2.php、test3.phpを10分の間隔をあけて実行したいのですが、cron側で設定する以外にシェルスクリプト側で設定することは可能でしょうか? あと基本的なことなのですが、test.phpを実行したい(叩きたい)だけの場合、wgetではなく他のコマンドではできないでしょうか?このような場合はどんなコマンドが適切なのでしょうか?

  • さくらVPSでcron指定はsh? php?

    これまで別のレンタルサーバで動作していたcronをさくらVPSでも動作させたいのですがうまくいきません。 ■これまで(レンタルサーバ) 1.cronにshファイルを指定 2.shファイル cd /var/www/★★ /usr/local/bin/php -d include_path='.:./●●.php ■今回(さくらVPS) /etc/crontab/ 05 7 * * * root /usr/bin/php /var/www/■■.sh ・どうしたら動作するでしょうか? ・/etc/crontab/の指定先は「phpファイル」「shファイル」の何れを指定するのでしょうか?

  • crontabのファイルのパス設定

    MacOSXを使っているUNIX超初心者です。 crontabのファイルのパス設定について質問です。 HDDが2台あって、コンソール上ではそれぞれ、 abcd123456:~ maruchan$ abcd123456:disk2 maruchan$ と表示されます(数字等は実際と変えていて、ユーザ名がmaruchanです)。 いつもは、コンソールからdisk2上のプログラムを直接動作させていまして、 abcd123456:disk2 maruchan$ /volumes/disk2/holder/program と打って、disk2/holder中のprogramを動作、その出力はdisk2/holderの中に書き込まれます。 コンソール上でいちいち打つ代わりに、crontabで行おうとして、disk2上にテキストファイルtest.crontabを作り、 00 12 * * * /volumes/disk2/holder/program と入れまして、下記を打ちました。 abcd123456:disk2 maruchan$ crontab test.crontab プログラムは指定時間に動作したのですが、出力が、 abcd123456:~ maruchan$ の中に書き込まれます。 出力は、disk2/holderに書かれるようにしたいのです。 原因はCronの環境設定が下記のデフォルトのままであることなのですが、test.crontab中にどのように環境設定記述をすれば良いのでしょうか? X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=maruchan> X-Cron-Env: <USER=maruchan> X-Cron-Env: <HOME=/Users/maruchan> なお、 HOME=/volumes/disk2/holder 00 12 * * * /volumes/disk2/holder/program としてみたのですが、変更できませんでした。 どうぞよろしくお願いします。

  • crontabでのシェル自動実行がNG

    いつも参考にさせてもらっています。 linux(Red Hat Enterprise Linux ES release 3 Apache/2.0.46)上でcrontabを設定したいのですが、 現在うまくいっておりません。 まず、autoindex.shというシェルを/home/foo/scripts/ディレクトレィに作成しました。中身は3行からなっていて #!/bin/sh cd /var/www/html/search/index mknmz -a /var/www/html/test です。telnet上でroot権限を使用し、./autoindex.shコマンド発行で正常に動作しました。 そこで、crontabに以下のように # crontab -l 50 11 * * * root /home/foo/scripts/autoindex.sh と設定したところ、 # more /etc/log/cron Sep 27 11:50:01 intra crond[18280]: (root) CMD (root /home/foo/scripts/autoindex.sh ) とcronは決めていた時間(11時50分)に稼動しているようなんですが、mailを見ると # mail -t From root@XXX.com Wed Sep 27 11:50:01 2006 Date: Wed, 27 Sep 2006 11:50:01 +0900 From: root@XXX.com (Cron Daemon) To: root@XXX.com Subject: Cron <root@hoge> root /home/foo/scripts/autoindex.sh X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/root> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root> /bin/sh: line 1: root: command not found と、シェルがこけているようです。 何か解決のヒントがありましたら、ぜひ教えていただけないでしょうか。

  • crontabの設定について

    某サイトを参考にIPアドレスの自動アップデート スクリプトを作成しました。 OSはCentOS6.2です。 その後、crontab -e を実行(中は空で何も記入されていませんでした)しました。 本来vi /etc/crontab で編集するのかなと思ったのですが、以前使用していたvinelinuxのcrontabと表示形式が違っていたので、何も書き込んでいません。 crontab -e 実行後、下記内容を貼り付け保存しました。MAIL TO は空欄たったのですが、スクリプトが正常に実行されているかメールで受信したいため、下記設定をしました。すると確かにメールは10間隔で届くのですが、内容は下記エラーです。 エラー内容 /bin/bash: root: command not found crontab 設定内容 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO={ローカルドメイン内のメールアドレス記載} HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly # DDNS */10 * * * * root perl /usr/ddns/ipchk.pl 00 5 * * 0 root rm -f /usr/ddns/CRT_IP.dat スクリプトの内容は下記のとおりです。スクリプトの中にwgetコマンドがあるのですが、centos6.2ではwgetが最初から入っていました。念のためyum -y install wget を実行したところすでにインストール済みの表示が出ました。(command not found と言うエラーからwgetが実行されないのかな、と勝手に思った次第です) #!/usr/local/bin/perl (which perl 実行結果 /usr/local/bin/perl と表示がでたのでそれに従いました) # $CRT_IPF = '/usr/ddns/CRT_IP.dat'; $NEW_IPF = '/usr/ddns/NEW_IP.dat'; $LOG = '/var/log/ddns.log'; open INPUT,"$CRT_IPF"; $CRT_IP=<INPUT>; close INPUT; system("/usr/local/bin/wget -q -O $NEW_IPF {ここには REMOTE_ADDR:の結果が取得できる登録済みDDNSのアドレス記入}"); open(INPUT,$NEW_IPF); $c = <INPUT>; $stp = index($c,"REMOTE_ADDR:")+12; $edp = length($c); $NEW_IP = substr($c,$stp,($edp-$stp)); close(INPUT); if ($NEW_IP ne "" and $CRT_IP ne $NEW_IP) { open (OUTPUT ,">$CRT_IPF"); print OUTPUT $NEW_IP; close OUTPUT; print "IP Address update: $CRT_IP to $NEW_IP\n"; system("/usr/bin/wget -q -O - '{DDNSのIP更新サイトのアドレス記載 &ドメイン&pw=パスワード}'"); $now_string = localtime; open (OUTPUT ,">>$LOG"); print OUTPUT "$now_string DDNS IP Address Updated. $CRT_IP to $NEW_IP\n"; close OUTPUT; } 何がいけないのでしょうか。よろしくお願いします。

  • CORESERVERでCRONジョブが実行されない

    この手の情報はネット上に沢山あるので自分なりに調べたのですが解決に至りませんでしたので質問させてください。 やりたいことは、CORESERVERのCRONジョブで設定した時間にcron.shを動かしてtest.phpを実行したいです。 ■現状 ・CRONジョブは毎日午前11時に動作するように設定 0 11 * * * ・CORESERVERからCRONジョブのエラーや成功メールが1通も届かない ・Tera Term で直接CRONを実行したが500エラーが返ってくる ・シェルスクリプトで動かしたいPHPファイルに問題はなかった(直接実行して成功) ■やったこと cron.shをCORESERVERのトップディレクトリに設置 /virtual/ユーザー名/cron.sh cron.shに記述した内容は #!/bin/sh #PHP /usr/local/bin/php /virtual/ユーザー名/public_html/サイトディレクトリ/php/test.php exit です。cron.shのパーミッションは705にしました。改行コードはLFです。 test.phpまでのディレクトリのパーミッションも705になっています。test.phpのパーミッションは644です。 Tera Term に入力したコマンド? sh /virtual/ユーザー名/cron.sh 上記を決定すると以下のスターテスが返ってきました。 Status: 500 Internal Server Error Content-type: text/html 何か根本的な間違いをしているのでしょうか? アドバイスをお願いいたします。

  • シェルスクリプトでPHPを実行したい

    シェルスクリプトでPHPを実行したいのですが、うまくできません。 centos5でcrontabに 20 0 * * * /bin/sh /var/www/html/test/test.sh と登録しています。 cronのlogをみたところ Dec 12 00:20:01 localhost crond[19060]: (root) CMD (/bin/sh /var/www/html/test/test.sh) と記録されていてここまでは問題ないように思えます。 test.shの中身は #!/bin/sh cd /var/www/html/test/ php -f daily.php > result exit になっています。 daily.phpが実行されないので、daily.phpに何かおかしなところがあるのかと思い daily.phpを直接ブラウザから起動してみたところ問題なく処理されました。 このような経緯でtest.shの中身が間違っていると思っているのですがどこが間違っているのか分かりません。 どなたかアドバイス頂けると助かります。

  • cronでwgetツールを自動化したい

    大学でvine Linuxを利用しています。 5つのサイトのソースファイルを毎日自動収集するようなシェルスクリプトを組みたいと思っています。 (/home/name/bin/の下に日付のディレクトリを作成してその中に5つを保存します。) 本や色々なサイトを参考にして、 #!/bin/sh d=`date +%m%d` * 7 * * * wget -P /home/name/bin/${d}/ http://A * 7 * * * wget -P /home/name/bin/${d}/ http://B * 7 * * * wget -P /home/name/bin/${d}/ http://C * 7 * * * wget -P /home/name/bin/${d}/ http://D * 7 * * * wget -P /home/name/bin/${d}/ http://E これをファイル.shとして保存して、 crontab /home/name/bin/ファイル.sh でcronに読み込ませたらいけるかと思ったんですがダメでした。 (crontab -eだとvimエディタになる設定のようなのでファイルを作成してから登録したいです) 初めてのシェルスクリプトで色々試しても上手くいかなくて困っています。 どなたか御指導よろしくお願いします。

  • xreaでのCronの設定について

    xreaでのCronの設定について どうしても解決出来ないので質問させて頂きました。 やりたい事は毎時一回 /public_html/cache_cron.phpを稼働させたいです。 現在の設定はxreaのCRONジョブの編集画面にて 分 時 日 月 曜日 0 * * * * /virtual/*****/public_html/cron1.sh 分 時 日 月 曜日 0 * * * * /virtual/*****/cron1.sh 始めは上の設定だけだったのですが動かないので下の設定も追加しました。 cron1.shは /public_html/cron1.sh /cron1.sh の両方にアップしています。 これも始めは/public_html/cron1.shだけにアップしてたのですが動かなかったので追加でアップしました。 アップ方法はffftpでのアスキーモードでcron1.shの改行もLFです。 パーミッションは705です。 cron1.shの中身は #!/bin/sh #PHP /usr/local/bin/php /virtual/*****/cache_cron.php /usr/local/bin/php /virtual/*****/public_html/cache_cron.php exit です。 cache_cron.phpにブラウザで直接アクセスすると希望通りの処理は行われます。 このファイルのパーミッションも705です。 一応確認でcache_cron.phpの最後に自分の携帯にメールを送信するプログラムも追加しているのですが、 直接アクセスしない限りメールは来ません。 他に必要な情報があれば書くので宜しくお願い致します。

    • 締切済み
    • PHP
  • cronとshファイルでphpを出力&上書きしたい

    mysqlでselectした結果を表示するlist.phpファイルというものがあるのですが、mysqlの記述が悪いためか、list.phpをウェブで見ようとすると数秒の時間が掛かってしまい、アクセスが多い時間帯だとなかなか表示されなくなってしまいます。 更新される内容はほとんど変化がないので、夜中にcronでlist.phpを実行した結果(mysqlでselectした結果)を静的ファイルとして別ファイルに出力し、それをlist2.phpとしてそちらにアクセスさせるようにできないものかと考えております。 イメージとしては、毎日夜中に1回だけmysqlでselectした結果をlist2.phpとして出力し&上書き保存したいのですがこれは可能でしょうか? このようなことを実現したい場合、cronとshファイルで処理することは可能でしょうか? 今試しているのは 0 3 * * * /home/myscript.sh をcrontab -eに設定し、 myscript.shの中身を #!/bin/sh cd /home/ php -f list.php ここまで書いてみたのですが、これではlist.phpを実行するだけでlist2.phpを出力することができませんでした。 どのようにしたらlist2.phpを毎日作成&上書きすることができるでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • PHP