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

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

ただいまの
回答率

90.76%

  • Python 3.x

    5374questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Python 2.7

    1210questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

  • Raspberry Pi

    718questions

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

  • Raspbian

    77questions

ラズベリーパイでpythonを自動起動実行すると5分くらいで止まってしまうのを解決したい

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 294

tamasa

score 3

ラズベリーパイでpythonで書いたプログラムをlxterminalで実行すると問題なく動作し続けます。このプログラムを起動時にlxterminalをオープンし、自動実行するように下記のファイルを作成しましたが上手く動作しません。
具体的には、ラズベリーパイの電源を切り(またはreboot)、pythonのプログラムを起動時に自動実行するとネットワーク接続を切っていると丁度10分くらいで止まってしまいます。起動後にターミナルからコマンドを入力して実行するとネットワークの接続を切っても止まりません。修正方法をお教え願えませんか。

「止まる」という現象は、lxterminalが閉じて、動作していたプログラムが停止し、lxterminalに表示させていた内容が見れなくなり、他の液晶ディスプレイで表示させていた内容が更新されず、表示が変わらずに固まっている状態です。

自動実行は、/home/pi/.config/autostartのフォルダにhogehoge.desktopというファイルを作り、下記のコードを入力して再起動し、実行させています。

ラズベリーパイ3 モデルB
OS:Raspbian GNU/Linux 9.3 (stretch)
python2.7

※下記の方法では起動しても動きませんでした。
https://teratail.com/questions/30955

[Desktop Entry]
Exec=lxterminal --geometry=200x50 -e python /home/pi/sht31ssp3.py
Type=Application
Name=hogehoge
Comment=Keep your pace as healthy as possible
Terminal=true

(追加:ログを取る為にコードの冒頭に記載追加)

import logging

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')

handler = logging.FileHandler(filename='log.txt')
handler.setLevel(logging.DEBUG)
handler.setFormatter(formatter)

logger.addHandler(handler)

logger.debug('debugText')
logger.info('infoText')
logger.warn('warnText')
logger.error('errorText')
logger.critical('criticalText')

宜しくお願い致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hayataka2049

    2018/04/27 11:01

    「止まってしまう」とはどのような状況ですか? エラー吐いて終了? ラズパイごとスリープしちゃう? それによってやることは変わってくるはずです

    キャンセル

  • coco_bauer

    2018/04/27 21:45

    sht31ssp3.py って、どんなプログラムなのですか? 起動時にオープンしたlxterminalに表示される内容と、lxterminalで実行したときに表示される内容は同じですか?

    キャンセル

  • tamasa

    2018/05/01 09:19

    ご指摘有難うございます。「止まってしまう」とは、lxterminalが閉じており、ラズパイはスリープしません。エラーも表示ターミナルがとじているので分かりません。電源を切っていたネットワークを起動すると自動で接続でき、VNC画面にて確認しており、lxterminalウィンドウは閉じています。

    キャンセル

  • tamasa

    2018/05/01 09:24

    sht31ss3.pyは温湿度を表示させるプログラムです。lxterminalに温湿度をリアルタイムで表示し続け、別に接続している液晶ディスプレイにも表示されます。lxterminalで実行時はコマンドの入力「$」が表示されますが、実行中の画面のみ表示されて温湿度が表示されます。コマンド入力するかしないかの表示がでるかでないかの違いで実行中の表示内容は同じです。

    キャンセル

回答 2

0

ふつうはどういう実行のさせかたをしようと、途中で止まる、ということはありません。
なので、まずどういう原因で止まる(あるいは止まっているように見える?)のかを追求する必要があります

そのプログラムでなんかログファイルかなんかを作るようにして、その止まるという時になにが起こってるか探ってみてはどうでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/01 15:00 編集

    ご回答有難うございます。ログファイルを下記のページを参考にプログラムにログファイルを作成するように上記のように書き換えて実行してみました。
    http://www.raspberrypirulo.net/entry/2016/09/06/ログのファイル出力

    lxterminalからコマンド入力で実行すると動きましたが、rebootすると最初から動きませんでした。ログファイルが生成されていましたので確認しましたところ詳細が分かりません。どのように原因を確認すれば宜しいでしょうか。初心者でよく分かっていませんが、止まる原因の突き止める方法をお教え頂けると助かります。宜しくお願い致します。

    2018-05-01 14:37:10,335 - DEBUG - debugText
    2018-05-01 14:37:10,335 - INFO - infoText
    2018-05-01 14:37:10,336 - WARNING - warnText
    2018-05-01 14:37:10,337 - ERROR - errorText
    2018-05-01 14:37:10,337 - CRITICAL - criticalText

    キャンセル

  • 2018/05/01 15:35

    ということは5分ぐらいで止まる、じゃなくて、そもそも起動していないってことでしょうか。
    ということで気になるのは、
    > 自動実行は、/home/.config/autostartのフォルダにhogehoge.startというファイルを作り、
    /home/ユーザ名/.config/autostart のフォルダじゃないでしょうか

    キャンセル

  • 2018/05/01 16:30

    すみません、文書を修正しましたが、止まるのは丁度10分程度です。起動はしており、別にラズベリーパイにつけた液晶ディスプレイは表示されて動作は確認出来ています。また、訂正しますが、/home/pi/.config/autostartのフォルダにhogehoge.desktopというファイルを作成しています。本文を修正しておきます。

    キャンセル

  • 2018/05/01 16:43

    起動できてるならログ出してみようよ(最初に戻る

    キャンセル

  • 2018/05/01 16:51

    詳細な原因が分かるログの出し方が分かりません。調べていますが、具体的方法が分かりませんのでお教え頂けると助かります。自分でも調べ続けております。

    キャンセル

  • 2018/05/01 16:57 編集

    あなたが組んだコードなら、どこでどう動いて、なにがどうなるというのは、あなたが全てわかっているはずです。
    しかし、それに反してコードが終了、(あるいは異常終了)してしまうということなので、その原因というのは、あなたが考えて出力させないといけません。
    調べてどこかに載っている、というもんではありません。

    キャンセル

  • 2018/05/01 17:11

    ご指摘有難うございます。コードは初心者なもので見ようみまねで作ってみていますので、恥ずかしながらエラーがどこにあるのか分からない状態です。lxterminalからは実行できますが、自動実行にして再起動すると止まってしまうということしか分からず、作成した自動起動のコードの意味も正直なぜ自動実行できるのかも分かっていません。勉強不足ですね。

    キャンセル

  • 2018/05/01 17:22

    たとえば、全ての関数を呼び出す個所に、呼び出す前と呼び出す後にログを仕込みます

    logger.info('uniuni start')
    uniuni()
    logger.info('uniuni end')

    そうしておけば、どこの関数の実行中にコケたか、というのがログを見ればわかる、というのが理解できるでしょうか。
    それがわかれば、その関数の中のコードに対して同じようにログを仕込んでおいて、どこでコケるかを調べる、また、変数の値などをログで出しておくなどします。
    ということを繰り返していって原因を追求します

    キャンセル

  • 2018/05/07 09:43

    ご回答有難うございます。関数の前後に記載して動作させてみましたがエラーで動きませんでした。別の方法で試しましたところ、ひとまず上手く行きましたので原因追求を続けていこうと思います。

    キャンセル

  • 2018/05/07 09:55

    まあ、動けばそんでいいんだろうけど、なんかわからんけどこーやったら動いた、としてると、なんかわからんけど動かんようになった、となるんだよなあ。

    キャンセル

  • 2018/05/09 16:38

    そうなんですよね、仰る通りでレベルがいつまでも上がりませんよね。解決できましたら投稿します。。。

    キャンセル

0

systemdを用いた上記とは別の下記の方法で試しましたところ、再起動後も問題なく動作しました。
https://qiita.com/tkato/items/6a227e7c2c2bde19521c

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python 3.x

    5374questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Python 2.7

    1210questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

  • Raspberry Pi

    718questions

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

  • Raspbian

    77questions