🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
cron

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

Python

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

解決済

2回答

3806閲覧

AWS EC2 PythonコマンドをCronで実行しようとするとNo such file or directoryがlogに表示される

mamara

総合スコア4

cron

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

Python

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

0グッド

0クリップ

投稿2021/03/13 06:19

編集2021/03/13 08:03

python3コマンドをcrontabで定期的に実行するように設定したのですが定刻になると以下のエラーが/var/log/cronに表示されます

Mar 13 04:00:01 ip-10-0-10-10 CROND[28759]: (ec2-user) CMD (ec2-user /usr/bin/python3 /var/www/html/Pythonファイルまでのパス) Mar 13 04:00:01 ip-10-0-10-10 CROND[28760]: (root) CMD (/usr/lib64/sa/sa1 1 1) Mar 13 04:00:01 ip-10-0-10-10 CROND[28761]: (CRON) EXEC FAILED (/usr/sbin/sendmail): No such file or directory

/usr/bin/python3 /var/www/html/Pythonファイルまでのパス はec2上でコマンドを打つと正常に実行されます
何が原因でこのようなエラーが表示されているのでしょうか?

###追記 crontab

0 4 * 2-12 * ec2-user /usr/bin/python3 /var/www/html/Pythonファイルまでのパス

追記 試したこと

0 4 * 2-12 * ec2-user /usr/bin/python3 /var/www/html/Pythonファイルまでのパスを

          • /usr/bin/python3 /var/www/html/Pythonファイルまでのパスに変更したが結果変わらず

PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/binをcrontabに追記するも変わらず

crontabの編集はec2-userでcrontab -eで行っています
改行コードがLFである事の確認
pythonに限らず

          • echo 'hello'

でも同様のエラーが出力されました

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

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

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

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

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

guest

回答2

0

ec2-userというコマンドが無いというエラーでしょう?あるんですか?

crontab

1* * * * * ec2-user /usr/bin/python3 /var/www/html/Pythonファイルまでのパス

と、コマンドを書くべき所に、ユーザー名のつもりで書いてしまっているのでは?削除しましょう。

投稿2021/03/13 06:26

編集2021/03/13 06:28
otn

総合スコア85882

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

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

mamara

2021/03/13 06:29

crontabでは 0 4 * 2-12 * ec2-user /usr/bin/python3 /var/www/html/Pythonファイルまでのパス と記述しているのですが記述に間違いがあるのでしょうか?
otn

2021/03/13 07:18

回答に書いたのですが、回答を読んでないのでしょうか?あるいは理解できないということでしょうか? ec2-user を削除しましょう。
mamara

2021/03/13 07:24

削除し試しましたが結果は変わりませんでした
mamara

2021/03/13 08:49

回答ありがとうございました。返信についてですが理解ができないため送りました。コードで出されている例が悪い例なのか良い例なのかの区別がつかなかったからです。悪い例のケースでは回答者さまの意図した意味になっていますがいい例のケースだと、いい例と、コマンドを書くべきところに、ユーザー名のつもりで書いてしまっていると判断できec2-user ec2-user /usr/bin/python3 という文法的ミスを予測して指摘しているものだとも取れます。ユーザー名削除ではcronで実行した標準出力が画面で表示されないことを知らなかったため問題は解決してないと捉え、いい例、悪い例どちらのケースでも対応できるよう返信をさせていただきました。回答者様の回答は適切なものでしたので例を出すときは何の例なのか明確にしていただけると幸いです
otn

2021/03/13 09:02

なるほど。文章を理解できなくても分かるような「誤り例」「正解例」を書いた方が良いと言うことですね。 今後の参考にしますが、誤りの理由が分からず正解だけ知っても質問者の成長が無いので、文章で書く方が良いとも思え、ケースバイケースでしょうか。
otn

2021/03/13 09:06

今回の例で言うと、私が例示したのはあなたが書いている物と同じで、それでうまく行ってないのですから、間違っている例であるのは、文章の意味が取れなくても自明だと思います。
guest

0

ベストアンサー

記載している cron の設定方法のは、ユーザーから crontab コマンドを実行しているのでしょうか?

それとも /etc/crontab ファイルに直接記載していますか?

設定方法で書式が異なりますので、設定方法に合わせた書式を使ってください。

各ユーザーで、crontab コマンドで設定している場合は、

# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * command to be executed

となり、実行する日時指定のあとは、コマンドとコマンドのオプションになります。 日時指定とコマンドの間に ユーザー名は入りません。

root ユーザーで、/etc/crontab ファイルを編集している場合は、実行する日時指定のあとにユーザー名が入ります。
(質問に記載されている 0 4 * 2-12 * ec2-user /usr/bin/python3 /var/www/html/Pythonファイルまでのパス は、この場合の書式ですが、ログを見ると crontab で設定しているように思えます。)

# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed

Red Hat Enterprise Linux ですが... 第24章 システムタスクの自動化 参照


(CRON) EXEC FAILED (/usr/sbin/sendmail): No such file or directory

のエラーを問題視しているのでしょうか?

CRON が実行時の出力等の通知をメール送信するために /usr/sbin/sendmail の実行ができなかったみたいですが、 sendmail や postfix 等の MTA は、インストールされて、送信できるように設定されている環境ですか?

cron の実行ファイルを /usr/bin/python3 /var/www/html/Pythonファイルまでのパス > /tmp/logfilename.log 2>&1 のように cron の出力をファイルリダイレクトするとどうなりますか?

投稿2021/03/13 08:07

CHERRY

総合スコア25216

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

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

mamara

2021/03/13 08:32

原因はcrontab -eコマンドをユーザーで使用したうえで* * * * * user-name commandと書いていたことであり、No such file or directoryの出力はおっしゃる通りcronがメールを送ろうとしているがメールを送る環境がないのでそれが原因で出されたものだと考えられます。cronの出力をリダイレクトすることにより気づくことができました。回答ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問