• ベストアンサー

CRONTAB設定で2日間隔記述方法を教えて下さい

2日間隔でAM1:00に実行するようにCRONで設定したいのですが 下記記述でよろしいでしょうか? 気にしているポイントは、月末が29日、30日、31日と変わる 場合に、下記記述で対応できるかどうかです。 * 1 */2 * * /htdocs/sample/sample.pl 以下、参考にした情報です。 <cronの書式> 分(0-59) 時(1-24) 日(1-31) 月(1-12) 曜日(0-7,0=7=日曜日) コマンド <参考にした記述> 3時間おき、0~30分の間の10分おきに実行 0-30/10 */3 * * * /htdocs/sample/test.sh ご回答宜しくお願い致します。

  • w5160
  • お礼率100% (2/2)

質問者が選んだベストアンサー

  • ベストアンサー
  • uwi
  • ベストアンサー率74% (55/74)
回答No.2

* 1 */2 * * /htdocs/sample/sample.pl だと、31日実行、1日実行というパターンなどがあり、通年では二日間隔にはなりません。(これを気にしている?) 例えば、年内通算日数が2で割り切れたら実行 * 1 * * * [[ $( expr $( date +\%j ) \% 2 ) = 0 ]] && /htdocs/sample/sample.pl とするととりあえず1年間は二日間隔になります。 ただ、スクリプト側で対応した方が楽だと思います。

w5160
質問者

お礼

説明が分かりにくくすいません。 ご理解頂いたとおりです。 ご指摘頂いたように、スクリプトで実施するように致します。 ありがとうございました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.1

日に間隔を指定した経験はありませんが、manを見る限り、正しいですね。 日フィールドの、*/2 は、1,3,5,7,....,29,31 の略記法なので。 * 1 */2 * * は、 0-59 1 1,3,5,(中略),29,31 1-12 0-6 と同じです。 1分ごとに現在時刻が上記パターンと一致するか比較され、一致すれば実行されます。

w5160
質問者

お礼

ご回答頂きましてありがとうございます。 また、返信が遅くなりまして申し訳ございません。 ご回答頂きました内容を改め読み返すことでmanの内容理解が深まりました。 ありがとうございました。

関連するQ&A

  • XREAサーバーのCRONTAB設定とシェルスクリプト記述方法を教えて下さい

    Linuxど素人の質問で恐縮です。 あるCGIを実行させるのにTera Term Pro(SSH対応版)というソフトでSSH接続しております。 なお、使用サーバーはXREAで広告免除サービスを利用してるのでSSH接続可能との事です。 下記コマンドが表示された状態で bash-2.05$ ./***.pl(リターン)で 手動では問題なく実行されます。  この***.plを5分おきに自動実行させる為には具体的にどうしたらいいのでしょうか? 例えばcronで下記の定期起動プログラムを作成すればよいのでしょうが 具体的な方法がわかりません。 */5 * * * * /usr/home/xxxxx/cgi-bin/***.pl  XREAの管理メニューからCRONジョブを選択しCRONTABの設定とシェルスクリプトの記述をすればよいらしいのですがここら辺の設定方法に関する質問はサポート外との事で困ってます。

  • cronはどの方法で設定すべきでしょうか?

    CentOS4,4をつかっています。(VPSです。・・・共有サーバだけど、実質root権限が持てます) で、cronを設定するときに、 「 crontab < updatedb.txt」(updatedb.txtはcronの書式が書いてあるファイル) でやる方法と、 /etc/cron.weekly /etc/cron.monthly /etc/cron.dai に前述のupdatedb.txtをいれる方法があるようですが ・・・って、違ってたらすみません。指摘してください。 いったいどちらの方法がベターなのでしょうか? なお、毎週火曜日のAM3:24に実行したいcronは、後者のやりかたでは実現できない、 というメリットは分かっています。 どなたかお分かりの方がいらっしゃいましたら、お教えいただけないでしょうか? 以上、よろしくお願いいたします。

  • 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; } 何がいけないのでしょうか。よろしくお願いします。

  • Twitterボット crontabについて

    ただ今PHPでテスト用ボットを作成しています。 crontabを使用し1分毎に現時刻をはかせるサンプルを作成しているのですが、うまくいかず困っています。 動作環境はMAMPです。 ターミナルから $ php /Applications/MAMP/htdocs/twitteroauth/app.php で実行するとツイートされるのでphp側のプログラムには問題はないかと存じます。 現在crontabに記載している内容は ***** php /Applications/MAMP/htdocs/twitteroauth/app.php となっています。 ***** /Applications/MAMP/bin/php/php5.3.6/php /Applications/MAMP/htdocs/twitteroauth/app.phpも試してみたのですが、どうにも吐いてくれません。 こちらhttp://okwave.jp/qa/q4388215.htmlも参考にさせていただいたのですが、解決には至れませんでした。 初心者故文中に支離滅裂な個所があるかとは存じますが、合わせてご指導いただければと存じます。よろしくお願い致します。

    • ベストアンサー
    • PHP
  • cronとrc.localへの記述内容について

    こんばんは、皆さん。 先頭行が#!/usr/bin/perlから始まる簡単なPerlスクリプトを書き、 実行権を777にし、/etc/rc.localとrootのcronに記述しました。 記述した内容が間違っていないと仮定した場合、動作しますか? 質問の仕方がよくないと思いますが、つまり、cronや/etc/rc.localは シェルスクリプトでないと制御できないのでしょうか? 実際に試してみましたが、シェルならうまくいくのですが、 Perlを起動できていないようです。 すべてフルパスで指定しているのでパスの問題ではないようです。 実行権もフルアクセスにしてみたので関係ないと思います。 どうすればcronや/etc/rc.localでPerlを扱えるのでしょうか? cronや/etc/rc.local、Perlスクリプトのサンプルを例として 挙げていただけると助かります。 一般的にPerlスクリプトは実行できないのでしょうか? もし実行できなければ、その理由も知りたいです。 よろしくお願いします。

  • exim4のqueue送信間隔について

    exim4をDebianにインストールしてメール送信テストを行っております。 mainlogをみると、送信を受け付けてから実際にqueueが送信されるまで 時間がかかっております。(30分間隔での実行) この間隔を短く設定する方法を教えてください。 Cronやexim4.conf.templateを見ましたがそれらしき設定は見当たりませんでした。 よろしくお願いします。

  • cronで第一水曜日に実行したい!

    cronで第一水曜日に実行したいのですが、 どのように記述していいかわかりません。 (または可能かどうかもわかりません) 月はじめではダメなので、month部分の編集ではたりません。 第一水曜日というふうに設定したいのですが教えてください。 また、cronのみでできない場合は、シェルでどのように制御したらいいのでしょうか?

  • cronが動かない

    cron初心者なのでお願いいたします。 fedora5で以下のようなCronを動かそうとしています。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin HOME=/htdocs/program 45 18 * * * perl U9901.pl rootで作成し、/var/spool/cronのrootの実行権限は755になっています。 しかし実行されません。 編集後、crondは再起動しています。 どのような原因が考えられますでしょうか? 過去ログも見たのですが、それらしいものが無かったので質問させてください。 お願いします。

  • crontabの自動実行について (Debian3.0)

    OSはDebian GNU/Linux 3.0です。 /etc/cron.daily の中にviで記述した下記のものを 保存しました。ファイル名back.sh #!/bin/sh rsync -acouv --stats /home/www /backup/back-all ;; しかし、自動実行できていませんでした。 www、back-all共に実在するディレクトリです。 crontabは下記のとおり、初期のままです。 SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 25 6 * * * root test -e /usr/sbin/anacron || run-parts --report /etc/cron.daily 47 6 * * 7 root test -e /usr/sbin/anacron || run-parts --report /etc/cron.weekly 52 6 1 * * root test -e /usr/sbin/anacron || run-parts --report /etc/cron.monthly # 何か間違いがあるのでしょうか?

  • 定期的に自動実行したい

    ある処理を30分おきに自動実行したいのですが、AM6時~AM8時の時間だけは実行したくない場合、CRONにはどのように登録すればよいでしょうか?