2017-12-22 32 views
0

私は、絶対パス/home/pi/foo.txtでtxtファイルにいくつかのデータを記録するpythonスクリプトを書いています。コマンドラインで何度も何度もスクリプトを起動しました。あなたがgoを押すと移動し、stopを押すと停止します。このスクリプトは/home/pi/log.pyにあります。私は私がでのcrontabて、このスクリプトを起動しようとしたとき、私はそれがチュートリアルに役立つかもしれないことを読んでいるので、このPythonスクリプトを実行し、それでは、それはしかしRaspberry pi crontabと割り込みをPythonで

#! /bin/sh 
cd /home/pi 
/usr/bin/python /home/pi/log.py 

を呼び出すlog.sh呼び出すようになるシェルスクリプトを書きました

スクリプトは実行されますが、ボタンを押してもスクリプトは停止しません(停止ボタンは機能しません)。 CPU使用率は100%まで上昇し、そこに固執します。私は自分のユーザー環境から環境変数をコピーしてcrontabに貼り付けようとしましたが、どちらもうまくいかないでしょう。

アイデア?

+0

あなたの脚本を教えてもらえますか?この問題をどのようにデバッグしようとしましたか?あなたのコードに 'print'ステートメントを入れれば助けになるかもしれません。 'cron'エントリをどこに追加しましたか(' @reboot log.sh')?それが 'root'として実行されている場合は、あなたのスクリプトを' root'として手動で実行しようとしましたか? – larsks

答えて

1

私は、crontabが使用する環境がユーザーの環境と同じではないという難しい方法を学びました。

は、ユーザーのcrontabとの間の環境の違いについての詳細は流れの上に、このスタックをチェックアウト:行うには、私の意見ではhttps://serverfault.com/questions/698577/why-is-the-cron-env-different-from-the-users-env/698635

最善のことは、単にPythonですべてを行うことです。 crontabのように動作するpython環境があります。スケジュール(https://pypi.python.org/pypi/schedule)と呼ばれています。

私は実際にラズベリーパイサーモスタットプロジェクトで使用しています。 こちらをご覧ください:https://github.com/mababio/raspi_thermostat/blob/c6aea6ded6874d0dc21ded34f07874dd7f97dd15/src/thermo/test/jobs.py