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

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

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

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

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

5544閲覧

cronによる定期実行が動作しない場合がある

study_111

総合スコア82

cron

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

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

2クリップ

投稿2020/05/12 09:30

編集2020/05/12 09:31

定期実行させる際のcronの設定について、分からないことがあります。
定期実行を行う為、「cron.conf」ファイルを作成し、そこにコマンドを登録しました。
具体的には、以下のようにです

0 10 * * * cd /var/www/django/test/ && python manage.py test

しかし、疑問な点があるのですが、以下の形ではテストする度、ほぼ毎回実行されます。

*/1 * * * * cd /var/www/django/test/ && python manage.py test

cron.confにコマンドを追記する度に、contab cron.confとし再度登録は行なっており、crontab -lでコマンド一覧に追加されているか確認しています。

原因は分からないのですが、10 14 * * * cd /var/www/django/test/ && python manage.py testこのような形でもたまに実行されることがあり、何が原因で実行されるのかの特定が出来ていない状況です。

こちらの原因特定の為、どなたかご助言頂けましたら幸いです。

DrqYuto👍を押しています

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

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

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

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

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

x98000

2020/05/12 10:00

問題の切り分けは出来ているでしょうか。1分ごとは起動できるが、時分指定は動作しないという状況でしょうか。 また、cronのログは確認したでしょうか。
study_111

2020/05/12 10:06 編集

>1分ごとは起動できるが、時分指定は動作しないという状況でしょうか。 はい。曖昧な表現となってしまっていてすみません。 現状は、ご指摘の通りの状態です。 cronのログは実はまだ取ってなく、今から実装する段階です...
x98000

2020/05/12 10:14

/var/log/cron が無ければ /var/log/syslogにcronの実行結果が出力されていませんか。 まずはcronの実行状況を確認しないと切り分けが出来ませんよ。
otn

2020/05/12 11:32

まずは、「起動されてない」のか、「起動されているが期待通りの動作でないので結果を確認できず起動してないこととの区別が付いてなかった」のか、どちらかを判別するところからです。
TakaiY

2020/05/12 13:40

'0 10 * * *' この指定は 毎日10時0分だけ、'10 14 * * *' この指定は毎日14時10分だけコマンドが実行されますが、 '*/1 * * * *'この指定では1分に1回、ずっと実行されつづけます。 そういうことではないですか?
study_111

2020/05/14 10:55 編集

ログに関してなのですが、「corn.conf」ファイルにて以下のように記載致しました。 「*/1 * * * * bash -c "cd /var/www/django/test1/test2/test3 && python manage.py test" >> var/www/django/test1/test2/test3/mycron/`date "+%Y%m%d_%H%M%S"`.log 2>&1」 corn.confファイルに記載した後、「crontab cron.conf」とし再度登録を行ったのですが、「mycron」ファイルへはログファイルが一つも作成されませんでした。 cron.confへの記載の仕方に問題点などございませんでしょうか? もし、見当たりましたらお手数ですが、教えて頂けましたら幸いです。
study_111

2020/05/14 10:54 編集

>/var/log/cron が無ければ /var/log/syslogにcronの実行結果が出力されていませんか。 ご返信遅れてしまい、すみません。こちらですが、ただ今確認しました所、cronに関する部分では以下のように記載されておりました。 May 14 10:50:01 ip-********* CRON[1456]: (ubuntu) CMD (bash -c "cd /var/www/django/var/www/django/test1/test2/test3/ && python manage.py test" >> var/www/django/var/www/django/test1/test2/test3/mycron/`date "+)
study_111

2020/05/14 10:58 編集

>0 10 * * *' この指定は 毎日10時0分だけ、'10 14 * * *' この指定は毎日14時10分だけコマンドが実行されますが、 '*/1 * * * *'この指定では1分に1回、ずっと実行されつづけます。 そういうことではないですか? こちらですが、一回だけ、すなわち複数行コマンドを登録していた場合は実行されなくなってしまいますでしょうか?
x98000

2020/05/14 10:58

ログは、期待通りに実行されているか、されていなければどれが実行されていないか、を確認してください。
study_111

2020/05/14 13:34 編集

>ログは、期待通りに実行されているか、されていなければどれが実行されていないか、を確認してください。 こちら「May 14 10:50:01 ip-********* CRON[1456]: (ubuntu) CMD (bash -c "cd /var/www/django/var/www/django/test1/test2/test3/ && python manage.py test" >> var/www/django/var/www/django/test1/test2/test3/mycron/`date "+)」のように記載されているということは実行がなされたという解釈で良いのでしょうか? ただ何故か「date +」の後の部分が消えてしまっている点はよく分からない部分なのですがね...
study_111

2020/05/14 13:43

再度cron.confファイルに「*/1 * * * * cd /var/www/django/test/ && python manage.py test」こちらを記載し、syslogを確認してみました所、ログが残っていたのですが、「0 10 * * * cd /var/www/django/test/ && python manage.py test」こちらに書き換えてみた所、ログが残っていないことが判明しました。
study_111

2020/05/14 14:17

原因が判明しました。 サーバーの時間がUTCの指定になっており、cron.confへはJSTで指定を行っていたことが原因でした。 cron.confへJSTの時間で指定し直し、テストしてみましたら定期実行が成功したことが確認できました。
guest

回答2

0

当てずっぽうですが

  1. cron デーモンが動いていない → systemctl status crond.service で動いていることを確認してください
  2. crontab を変更して、1分未満の場合は、実行されない

Ex) 現在時刻が 9:59 の場合、00 10 * * * ... は実行されません。
→ 1分以上後の時間を設定してください
3. 動いてないようで実は動いていて、何かしらのエラーになっている
→ログを残して切り分けてください。必要に応じて manage.py に print など挟んでログメッセージを出力するようにしてください(日時、開始、終了などわかるように)。
Ex) 10 14 * * * bash -c "cd /var/www/django/test/ && python manage.py test" >> /var/log/mycron.txt 2>&1

投稿2020/05/12 15:10

take88

総合スコア1467

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

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

study_111

2020/05/13 00:18 編集

ご回答ありがとうございます。 >systemctl status crond.service こちらの結果ですが、「unit crond.service could not be found.」と出力されました。 ログに関してなのですが、上司にもログを残すように言われ、エラー内容が確認できるように標準出力と標準エラーをログファイルに保存するようにとのことでした。 「$ sh ./test.sh > test.log 2>&1」 「$ python 絶対パス指定のファイル名 > `date "+%Y%m%d_%H%M%S"`.log 2>&1」 こちら2つのコマンドを例に提示頂いたのですが、コマンドの意味が分からない状態の為、一度調べ、実行してみたいと思います。
study_111

2020/05/14 10:46

ログに関してなのですが、「corn.conf」ファイルにて以下のように記載致しました。 「*/1 * * * * bash -c "cd /var/www/django/test1/test2/test3 && python manage.py test.py" >> var/www/django/test1/test2/test3/mycron/`date "+%Y%m%d_%H%M%S"`.log 2>&1」 corn.confファイルに記載した後、「crontab cron.conf」とし再度登録を行ったのですが、「mycron」ファイルへはログファイルが一つも作成されませんでした。 cron.confへの記載の仕方に問題点などございませんでしょうか? もし、見当たりましたらお手数ですが、教えて頂けましたら幸いです。
study_111

2020/05/14 14:30 編集

今回の問題は解決しました為、自己解決として回答を投稿致しました。 しかしながら、ファイルへ実行ログが作成されない原因は未だ分からない為、お手すきの際にでも、ご助言頂けましたら幸いです...
guest

0

自己解決

以下の形式(1分間隔)で実行されていたのはサーバーの時間がUTCになっていたからでした。0 10 * * * こちらの指定ではJST時間を想定していました為、実行がされなかったことが分かりました。

*/1 * * * * cd /var/www/django/test/ && python manage.py test

再度、UTC時間に合わせ指定し直し、定期実行を試してみた所成功しました。
また、/var/log/syslogこちらのログファイルでもログの確認が取れました。

投稿2020/05/14 14:23

編集2020/05/14 14:25
study_111

総合スコア82

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問