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

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

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

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

Linux

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

Ubuntu

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

Q&A

解決済

1回答

774閲覧

定期実行による、ログファイルが作成されない

study_111

総合スコア82

cron

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

Linux

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

Ubuntu

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

0グッド

0クリップ

投稿2020/05/22 10:27

編集2020/05/22 13:02

定期実行によるログファイル作成が行われません。

定期実行の設定は以下の手順で行いました。

  1. cron.confファイルを作成し、以下のコマンドを記載しました。

*/1 * * * * echo xxx >> /var/www/django/test/polls/polls_1/log/`date "+%Y%m%d_%H%M%S"`.log 2>&1

  1. 「crontab cron.conf」にて、定期実行コマンドを登録

しかし、polls_1/log配下にはログファイルは作成されませんでした。

「/var/log/syslog」を確認してみたのですが、定期実行が行われたログは残っておりました。
また、手動で、以下のコマンドを実行しましたら、「polls_1/log」配下にログファイルが作成されていることが確認出来ました。echo xxx >> /var/www/django/test/polls/polls_1/log/`date "+%Y%m%d_%H%M%S"`.log 2>&1

権限の問題かと思い、chmod -R 777 /var/www/django/test/polls/polls_1/log/としたのですが、変わらず、ログファイルは生成されませんでした。

※環境情報
OS: ubuntu(18.04.3 LTS )

こちらの現象の解決の為、ご助言頂けましたら幸いです。

追記です
dateを使用せず、以下のようにcron.confに記載したら、ログファイル(test.log)が作成されました。echo xxx >> /var/www/django/test/polls/polls_1/log/test.log 2>&1

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

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

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

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

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

takasima20

2020/05/22 10:47

dateを使わずに書いたものがokならdateの問題でしょう。
x98000

2020/05/22 10:49

別のディレクトリへの出力は出来たという情報も追記したほうがいいのでは。
x98000

2020/05/22 10:57

あと、2>&1 を消してエラーを確認するという手もあります。
study_111

2020/05/22 12:53

>別のディレクトリへの出力は出来たという情報も追記したほうがいいのでは 別ディレクトリへの出力ですが、何故か再度試しましたら、ログファイルを作成できませんでした。 >dateを使わずに書いたものがokならdateの問題でしょう。 こちらですが、dateを使用せず、「test.log 2>&1」のようにしましたら、ログファイルが作成されました。
x98000

2020/05/23 02:10

そうすると権限ではなくdateの問題ですね。
study_111

2020/05/23 02:13 編集

今、調べているのですが、どうすれば良いか分からない状態です... dateの部分を「$(date "+%Y%m%d_%H%M%S").log」このようにして実行してみましたら、log/フォルダには、「.log」と日付だけが表示されずにファイルが作成されてしまいました... dateの部分を代替出来る方法などございますでしょうか...?
takasima20

2020/05/23 09:20

自分的には cron にはごちゃごちゃ書かず、スクリプトを登録するのみってポリシーなんですけど、最近はそういうのは流行らない風潮なんスかねえ。
study_111

2020/05/23 09:29

いえ...自分も定期実行に関しましては、調べながらやっている段階な為、よく分からず試し試し、行なっている状況なんですよね...
takasima20

2020/05/23 10:58

あー、いや、この質問だけのことでなく、teratailの質問でよく見かけるのでそうなのかなあ、と。study_111さんのやり方をいってるわけじゃないス。まぎらわしかったですね。申し訳ない。(汗
study_111

2020/05/23 13:03

あ、いえいえ! そういう意味だったのですね。理解しました!
guest

回答1

0

ベストアンサー

cronでは%が改行に置き換わるようです。なので、%はエスケープしなければなりません。

cron

1*/1 * * * * echo xxx >> /var/www/django/test/polls/polls_1/log/`date +\%Y\%m\%d_\%H\%M\%S`.log 2>&1

これで試してみてください。

投稿2020/05/23 02:13

x98000

総合スコア1096

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

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

study_111

2020/05/23 02:17

ご回答ありがとうございます。 試してみましたら、日付が記載されたログファイルが作成されました。 本当に、感謝です... 解決できず、業務が滞ってしまっていて結構メンタルにきておりました...笑
study_111

2020/05/23 02:22 編集

ちなみに、今後自分が問題を解決していく上で、是非お伺いしたいことがあるのですが、ご回答下さった「cronでは%が改行に置き換わる」というのは、どのような形でお知りになりましたでしょうか? もし、検索で引っかかった場合でしたら、お手数ですが検索キーワードなど、教えて頂けましたら幸いです。
x98000

2020/05/23 02:21

見返してみると、cronのログが途中で切れていることに早く気づくべきでした。時間がかかってすいません。
x98000

2020/05/23 02:22

「日付 cron」で幾つか出てきますよ
study_111

2020/05/23 02:24

いえ。前回の質問から、引き続きご回答下さり、ありがとうございました。 あ、「日付 cron」で出てきましたか。検索キーワードなど、色々と工夫し、今後は調べていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問