質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

4198閲覧

crontabの繰り返し実行をどうにかしたい

behoimi80

総合スコア62

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

2クリップ

投稿2019/05/08 02:49

Linuxのcrontabにて毎日1時1分にプログラムを実行しています。

ある日、データの容量が多くなり処理時間が15分以上かかる日があり、その日は1時16分に再度プログラムが実行されました。

ログを確認すると処理が15分以上掛かると、1時16分、1時31分、1時46分、2時1分と何度もプログラムを実行しています。
処理時間が15分以内に終わると再度の実行はなく、終了します。

そこで実行を1度だけにしたいのですが、15分過ぎても実行しない、または15分の時間延ばすcronの設定があるのでしょうか?

ご教授宜しくお願い致します。

linuxのバージョン
CentOS release 6.5 (Final)

crontabの設定

01 1 * * * root run-parts /etc/cron.daily

cron.dailyにあるファイルの設定

wget --delete-after=on http://localhost/batch.php

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

cronwgetを何度も実行していると言う事ではなく、wgetが何度もhttp://localhost/batch.phpをアクセスして動かしていると言う事ですね。

wgetのオプションで、

-t, --tries=NUMBER リトライ回数の上限を指定 (0 は無制限).

リトライを1回のみには出来そうです。

-T, --timeout=SECONDS 全てのタイムアウトを SECONDS 秒に設定する

は手元の環境では効きませんでしたが、タイムアウトの原因によっては効くかも知れません。

根本策としては、wgetで間接的に呼び出すのでなく、cronから直接batch.phpを起動するのがいいと思います。

投稿2019/05/08 06:05

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

behoimi80

2019/05/08 06:58

詳しく説明ありがとうございました。 また、根本策も勉強になりました。ありがとうございました。
otn

2019/05/08 12:52

やってみると、--tries=1 でリトライしませんね。リトライ回数じゃなくて、トライ回数だ。日本語訳が間違っていたのか。
guest

0

ベストアンサー

すみません、それはcronではなくwgetのタイムアウトではないでしょうか?

wget --tries=1 http://localhost/batch.php

で、どうでしょう?

投稿2019/05/08 05:44

k-nishiyama

総合スコア240

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

behoimi80

2019/05/08 06:57

寝耳に水状態でした。間違いないと思います。 助かりました。ありがとうございました。
k-nishiyama

2019/05/08 08:37

解決されたようで、良かったです!
guest

0

やってみてないですけど・・・。

CRONで実行したプロセスのタイムアウトを設定する | 優技録


は?

投稿2019/05/08 03:25

showkit

総合スコア1638

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

behoimi80

2019/05/08 03:32

返信ありがとうございます。そういうことも出来るんですね。 私も引き続き調べてみるとcronの多重起動というものらしいです。 でもなぜ15分間隔なのか・・・。もう少し調べてみます。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問