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

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

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

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

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Python

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

Q&A

2回答

3217閲覧

crontabでpythonが動かなくなった

TK_T

総合スコア6

cron

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

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Python

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

0グッド

0クリップ

投稿2021/04/16 15:32

test.pyというパイソンファイルに

from selenium import webdriver driver = webdriver.Chrome() driver.get('https:google.com')

と記載し、crontabに

PATH=/Users/XXXXX/.pyenv/shims:/usr/bin:/bin:/usr/local/bin/chromedriver */1 * * * * python ~/python/test.py

と記載し毎日実行していました。

ところが昨日から急に動かなくなってしまいました。
ログには

/Users/XXXXX/.pyenv/versions/3.9.1/bin/python: can't open file '/Users/XXXXX/python/test.py ': [Errno 2] No such file or directory

とエラーが記載され
mboxには

/bin/sh: python test.py: command not found

出ています。
色々と調べたのですが、解決方法が分からず本当に困っています。
どなたか原因と解決方法が分かる方はお力添え下さい。

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

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

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

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

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

guest

回答2

0

/Users/XXXXX/.pyenv/versions/3.9.1/bin/python: can't open file '/Users/XXXXX/python/test.py ': [Errno 2] No such file or directory

は、/Users/XXXXX/python/test.py というファイルが無いというエラーです。
おそらく、/Users/XXXXX/python/test.pyというファイルはあるのでしょうが、末尾の空白の有無が異なります。

/bin/sh: python test.py: command not found

は、pythonでなくpython test.pyという途中に空白が混じった文字列をコマンドとして実行しようとしたが、"python test.py"という名前のファイルはPATHの中に内というエラーです。
例えば端末のシェルプロンプトで、
pyton test.pyでなく"python test.py"と引用符で囲んで入力すると同じエラーメッセージが出ます。

矛盾する結果なので、おそらく、あなたがいろいろ書き直している時に、別々のタイミングで違うコマンドラインが実行されたときの、それぞれのエラーメッセージなのでしょう。

ということで、

ところが昨日から急に動かなくなってしまいました。

は、あなたが書き換えたのが原因でしょう。

crontab

1*/1 * * * * python ~/python/test.py

は、正しそうに見えます。

投稿2021/04/17 09:12

otn

総合スコア85901

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

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

TK_T

2021/04/18 15:16

otn様の仰る通り、書き換えといいますか更新をしました。 申し訳ございません。もうすこし詳しく記載します。 PATH=/Users/XXXXX/.pyenv/shims:/usr/local/bin/chromedriver:/usr/local/bin:/usr/bin:/bin */1 * * * * python ~/python/test/test.py だと動くのですが、 PATH=/Users/XXXXX/.pyenv/shims:/usr/local/bin/chromedriver:/usr/local/bin:/usr/bin:/bin */1 * * * * python ~/python/test/test.py >> ~/python/botlog 2>&1 とすると 、、、 /Users/XXXXX/.pyenv/versions/3.9.1/bin/python: can't open file '/Users/XXXXX/python/test/test.py ': [Errno 2] No such file or directory 、、、 となってしまいます。 いままでずっとメモ帳に PATH=/Users/XXXXX/.pyenv/shims:/usr/local/bin/chromedriver:/usr/local/bin:/usr/bin:/bin */1 * * * * python ~/python/test/test.py >> ~/python/botlog 2>&1 と記載しており、crontabへコピペしていたのに、一昨日から突然上記のようなエラーが出てしまっている状況です。"test.py"ではなく空白付きの"test.py "を探しているように見えますが、今までもずっとこのコードをコピペしていただけなので何故突然このようなことになってしまったのか困惑しており、お力添えをいただければ本当に助かります。
otn

2021/04/18 15:32

空白に見えるが空白でない文字なんでしょうね。 ファイルの中身を調べてみましょう。というのが分からなければ、ゼロから手で打ち直すか。
TK_T

2021/04/19 04:40

申し訳ございません、ファイルの中身を調べるとはどういうことでしょうか。 */1 * * * * python ~/python/test/test.py はOKで */1 * * * * python ~/python/test/test.py >> ~/python/botlog 2>&1 だと動かないのは上記の記述ではなく何かファイルに問題があるのでしょうか。。。無知で申し訳ございません。
otn

2021/04/19 04:44 編集

> 空白に見えるが空白でない文字なんでしょうね。ファイルの中身を調べてみましょう。 ということなのですが。 ユニコードには、空白に見えて空白で無い文字がありますし、目に見えないけど文字コードだけあると言う文字もあります。ファイル内の文字コードを調べてみましょうと言うことです。 > というのが分からなければ、ゼロから手で打ち直すか。 の方をお薦めします。
TK_T

2021/04/19 05:28

申し訳ございません、記載頂いている内容が理解できません。 crontabの記載の問題であって、test.pyのファイルの中身の記述は関係がないのではないでしょうか? ちなみにですが、 */1 * * * * python ~/python/test/test.py >> ~/python/botlog 2>&1 のtest.pyの後ろの空白を消して */1 * * * * python ~/python/test/test.py>> ~/python/botlog 2>&1 とすればなぜか正常に動きました。 なのでcrontabの記載によって動いたり動かなかったりです。 しかし正しい記載はtest.pyの後ろの空白のある */1 * * * * python ~/python/test/test.py >> ~/python/botlog 2>&1 だと思っています。(いままでずっと空白有りで動いていたので) ゼロから打ち直すというのも、申し訳ございません、どういう意味なのか理解できず・・・ 打ち直しても空白は空白かと思うのですが、、、初学者故に無知な質問で申し訳ございません。
TK_T

2021/04/19 05:33

追記です。 メモアプリから */1 * * * * python ~/python/test/test.py >> ~/python/botlog 2>&1 をcrontabにコピーしたら動きませんでしたが、 */1 * * * * python ~/python/test/test.py >> ~/python/botlog 2>&1 を一度ブラウザに貼り付けてから、それをコピーしてctontabに貼り付けたら動きました。
TK_T

2021/04/19 05:34

メモアプリの空白は何故空白として認識されないのでしょうされないのでしょうか。 また、 */1 * * * * python ~/python/test/test.py >> ~/python/botlog 2>&1 の*/1 * * * *の後ろの空白は認識されているのに、何故~/python/test/test.pyの後ろの空白だけ認識されないのでしょうか
TK_T

2021/04/19 05:37

ちなみにメモアプリはevernoteを使っていて、先日アップデートしました。crontabがおかしくなったのもそれからです。 下記のツイートの内容と関係ありそうな気がするのですが、文字コードが変わった?ということなのでしょうか? https://twitter.com/nako_x/status/1336570981502971905
otn

2021/04/19 06:12

> crontabの記載の問題であって、test.pyのファイルの中身の記述は関係がないのではないでしょうか? コピペしたと書いてありますけど?コピペしたなら当然関係あるでしょ? > ゼロから打ち直すというのも、申し訳ございません、どういう意味なのか理解できず・・・ 打ち直すというのは、コピペしないで文字を全部キーボードで打つという意味です。 ゼロからと言うのは、コピペした部分を全部消してという意味です。 > ちなみにメモアプリはevernoteを使っていて、先日アップデートしました。crontabがおかしくなったのもそれからです。 メモ帳からコピペしたというのは間違いで、evernoteからのコピペですか?? そりゃますます怪しいですね。そういう重要なことはちゃんと質問文に書きましょう。 evernoteが「空白に見えるが空白でない文字」を使っているのでは? 再度書きますが、ゼロから全部手で打ち直しましょう。 「ユニコードには、空白に見えて空白で無い文字がありますし、目に見えないけど文字コードだけあると言う文字もあります。」 というのを覚えておきましょう。
68user

2021/04/19 08:09 編集

crontab -l | od -cx crontab -l | hexdump -cx あたりで、正しく動くものと動かないものを見比べることで変なコードが入っているかどうかがわかるかと思います。
otn

2021/04/19 08:37

↑というコマンドを自分で思いつかない人が、結果だけ見ても判断できないと思いました。 あ、cat -v なら分かるかも。 crontab -l | cat -v を見比べてみて下さい。
TK_T

2021/04/21 03:19

crontabに記載するコードをevernoteからコピペ 実行するtest.pyの中身は変更無し evernoteのupdateがあった 初学者故に質問しましたが、記載いただいた内容にひどく傷つきました。 初学者の質問は多くの他の初学者にも参考になったり、サイトの盛り上がりにも寄与するかと思いましたが質問する頻度を控えようと思います。この度はご回答ありがとうございました。
otn

2021/04/21 03:32

> 記載いただいた内容にひどく傷つきました。 ?? どの内容でしょうか? > 初学者の質問は多くの他の初学者にも参考になったり、サイトの盛り上がりにも寄与するかと思いましたが はい。そう思います。
guest

0

エラー内容 : [Errno 2] No such file or directory の意味は、
「指定したファイルやディレクトリが存在していない」
です。

このメッセージの内容の内容の通りであれば、
「/Users/XXXXX/python/test.py」が無いに見えそうですが、
/bin/sh: python test.py: command not found と出ていることから python が見えてないのかもしれません。

この cron を実行している環境上で、何かシステムの変更や更新などがあった可能性が考えられます。

  1. まず cron の pytohn の行を /usr/bin/python など、フルパスで、正確なものに書き換えてみて、コマンドライン上で動作するかどうか確認
  2. cron に記述して、自動実行できるかどうか確認

この手順で確認されてみてはいかがでしょう。

投稿2021/04/16 18:46

zembutsu

総合スコア1584

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問