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

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

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

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

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

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

Q&A

0回答

1344閲覧

ラズパイでパイソンを使用し定期的プログラムを実行したい。

viera

総合スコア1

cron

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

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

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

0グッド

1クリップ

投稿2020/10/21 02:04

編集2020/10/21 08:46

現在、Python言語を勉強しているものです。
右も左もわからない私にどうか救いの手を、、、、

バージョン python3 3.7.3

ラズパイにてpythonを使用し、定期的にプログラムを実行するために、crontabを使用することがわかりいろいろためしてみたのですが、エラーがでており起動されていないようです。error(grandchild。。。。。)以下でております。

Oct 21 15:45:01 raspberrypi CRON[18084]: (pi) CMD ([18088] /usr/bin/python3 /home/pi/adxl345-Python/df/ftp_up3.py) Oct 21 15:45:01 raspberrypi CRON[18084]: (CRON) error (grandchild #18088 failed with exit status 1) Oct 21 15:45:01 raspberrypi CRON[18084]: (pi) END ([18088] /usr/bin/python3 /home/pi/adxl345-Python/df/ftp_up3.py)

いろんなサイト見て、設定は完了しているのですが、絶対pathがおかしいのでこの異常が出ていますますでしょうか??
自分がcrontab -eに設定しているのは以下です。

*/1 * * * * /usr/bin/python3 /home/pi/adxl345-Python/df/ftp_up3.py

(手動でのftp up3.pyのプログラムは正常に動作します。)

いくらpathのところをいじっても上手くいきません、、、

たくさんの助言ありがとうございます。

ftp_up3.pyのコードは以下です。

import ftplib import datetime def ftp_upload(filename): ftp = ftplib.FTP('***.***.*.**') ftp.set_pasv('true') ftp.login('ユーザー名','パスワード') ftp.cwd('/aaa/') f = open(filename,'rb') ftp.storbinary('STOR ' + filename,f) now = datetime.datetime.now() fm = now.strftime("%Y%m%d") +".csv" ftp_upload(fm)

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

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

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

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

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

tanat

2020/10/21 03:12

cronではなく、手動で実行するとどうなりますか?
yasutakatou

2020/10/21 04:32

エラーが出ている/home/pi/adxl345-Python/example.pyとcrontabに設定している/home/pi/adxl345-Python/df/ftp up.pyのファイル名が同じでないのですが、どちらが実行したいプログラムでしょうか。 /home/pi/adxl345-Python/df/ftp up.pyが設定しているものなのであればftp up.pyの間に( )スペースが入っているのでエラーになっていると見受けられます、_(アンダーバー)などに変更して状況がどうなるかご確認ください。
dodox86

2020/10/21 05:14

@yasutakatouさん > ftp up.pyの間に( )スペースが入っているのでエラーになっていると見受けられます、 crontab では普通にコマンドラインを入力するように、つまりスペースがコマンドライン中に入っていても問題は無いです。ただ、"_"など別の文字列に変えて状況が変わるかどうかの確認は、解決のヒントになるかもしれないので同意します。 @質問者さん crontab -l で登録した内容を出力し、正しく登録しているか再度確認してみてください。 example.py は、別の、例えば過去とか別のアカウントのログを見ていたということはないですか。
viera

2020/10/21 07:04 編集

@tanatさん 手動で実行すると問題無く動作します! 一応プログラム内容はcsvファイルの最初のデータを別のパソコンに転送し保存するといったものです。 @yasutakatouさん 見づらくしてすいませんでした。 一応動作させたいのは/home/pi/adxl345-Python/df/ftp up3.pyほうです! "_"に変更しましたがダメでした、、 @dodox86さん 正しく登録とは入れた内容が反映されていればいいのでしょうか?? 一応、crontab -l 確認すると */1 * * * * /usr/bin/python3 /home/pi/adxl345-Python/df/ftp_up3.py となっています!
dodox86

2020/10/21 06:10

私へのコメントではないですが一応、 > "_"に変更しましたがダメでした むしろダメであることの確認だったと思います。もとに戻してよいのではないでしょうか。 ログでは"python3 /home/pi/adxl345-Python/example.py" と出ているのに、crontab では "/usr/bin/python3 /home/pi/adxl345-Python/df/ftp up.py と指定しています。ログがおかしいです。更に、 /usr/bin/python3 これはpython3インタプリタ /home/pi/adxl345-Python/df/ftp これは何者ですか? up.py これは何者ですか?どのPATH(ディレクトリ)に存在しますか?これをフルPATHで指定したらどうでしょうか。
yasutakatou

2020/10/21 06:34

アンダーバーの変更確認ありがとうございました。となるとdodox86さんのおっしゃる通り ①何を動かそうとしているのか ②それぞれのコードなりツールは何か が分からないですね。/home/pi/adxl345-Python/df/ftpがツールならそもそもプログラミングの質問ではなくなっていきますし。。
viera

2020/10/21 06:51 編集

/home/pi/adxl345-Python/df/というディレクトリにあるftp_up3.pyパイソンスプリクトを現在、起動したいのですが、一応僕は/home/pi/adxl345-Python/df/これがフルパスだと思っているのですが認識ハズレでしょうか??
viera

2020/10/21 06:52

エラーのログは現在のに修正しました、、、 記入したタイミングが悪く、古いものをコピーして貼り付けていました。
dodox86

2020/10/21 06:57

> 認識ハズレでしょうか?? ちょっと違いますね。 /home/pi/adxl345-Python/df/ ディレクトリ下に存在する ftp_up3.py と言う名前のファイルのフルPATHあるいは絶対PATHは、 /home/pi/adxl345-Python/df/ftp_up3.py です。要は、ディレクトリあるいはファイルのPATHを略せず、相対的でもなく示すPATHを通常は「フルPATH」あるいは「絶対PATH」と言います。
viera

2020/10/21 07:03

とすると、絶対PATHはあっているがその前のインタプリタが不要で上手くいっていないのでしょうか??
dodox86

2020/10/21 07:08

話が混乱しています。元に戻って、最初、質問に提示したcrontab への登録内容は以下、です。 > */1 * * * * /usr/bin/python3 /home/pi/adxl345-Python/df/ftp up.py "ftp" up.py"との間はスペースで分かれています。で、質問文中の次の行には > (ftp up3.pyのプログラムは正常に動作しています。) と記載されています。 "ftp up3.py" と、"up3.py"が突如出現してます。更にスペースで分かれていますが、ftp_up3.pyが正しいのですか? 最初の質問への記載内容が間違っていたということでしょうか。
viera

2020/10/21 07:08

一応 crontab -e には */1 * * * * /usr/bin/python3 /home/pi/adxl345-Python/df/ftp_up3.py で記入しています。
dodox86

2020/10/21 07:10

当初の質問と別の問題になっている、ということを言っています。
viera

2020/10/21 07:14 編集

記載内容が間違っていて、ftp_up3.pyが正しいです。
bsdfan

2020/10/21 07:38

> 一応プログラム内容はcsvファイルの最初のデータを別のパソコンに転送し保存するといったものです。 プログラム中の、csvファイルも絶対パスで書いていますか?
yasutakatou

2020/10/21 07:44

そもそも正常終了に見えてpyhtonが終了時にexit 1を返している可能性も無くは無いですね。 できれば該当のコードをアップするようお願いします。難しければ https://dalomo.net/blog/2019/07/17/575/ こちらにあるようにログを取ってcronを実施するようお願いします。
viera

2020/10/21 08:38

ftp_up3.pyのコード追記しました。
bsdfan

2020/10/21 08:48

csvファイルを相対パスで開いているので、そこでエラーになっている可能性が高いです。 絶対パスで開くようにするか、想定しているディレクトリにchdirするようにしないといけません。
yasutakatou

2020/10/21 12:54

bsdfanさんのご回答に一票です!試してみてくださいな
viera

2020/10/22 00:21

回答ありがとうございます! いじるのはcrontabの方ですか?? もしくはスプリクトのコードの方ですか?? どこをどのようにいじればいけますでしょうか??
yasutakatou

2020/10/22 00:24

コードの方ですね。 now.strftime("%Y%m%d") +".csv" を絶対パスに書き換えてみてはいかがでしょうか。now.strftime("%Y%m%d") +".csv"の前に "/home/pi/adxl345-Python/df/" + みたいに絶対パスを追記します。
viera

2020/10/22 00:27

ありがとうございます。いまからやってみます!!
yasutakatou

2020/10/22 00:30

お手数ですが試して見てください。一点、絶対パスは必ずcsvがある場所を指定してください。 私が書いたのはあくまで例なのでここにcsvが無いとエラーが解消できませんよー
dodox86

2020/10/22 00:38

>@質問者さん [2020/10/22 09:21]のコメントより > どこをどのようにいじればいけますでしょうか?? 恐らくコメントしている私を含む方々は、質問者であるvieraさんがpython3と当該スクリプトの内容を理解している前提で対応しているのだと思いますが、その辺りの認識は合っていますでしょうか。os特有、cron特有の問題に遭遇していて、質問中の不明点を明らかにすべく皆さんコメントしていると思うのですけど。 もしそうでなければ、本来、回答も少々変わってくるはずです。話は進んでいるようなので私は以降、コメントするのは控えますが。
viera

2020/10/22 03:00

@yasutatouさん コードも絶対パスにしないといけないということをもとに調べたら転送できるようになりました!ありがとうございます!
viera

2020/10/22 03:00

@みなさま お手数おかけしました。 知識不足でご迷惑おかけしましたが無事できました! ありがとうございました!
yasutakatou

2020/10/22 03:10

無事解決して良かったですね!! bsdfanさんか、dodox86さんが回答書かれると思うのでベストアンサーを入れてあげてくださいねー
dodox86

2020/10/22 03:14

いえ、私は途中まで質問の不足を補った程度なので、回答は書かないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問