3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Raspberry Pi3B+でcron使えるまで

3
Last updated at Posted at 2019-06-04

経緯

ラズパイを起動時にpyenvのpythonでpythonスクリプトを実行させたい

環境

RaspberryPi3b+
stretch(Release 9.9)
Python3.4(pyenv)

cronログを有効

sudo vi /etc/rsyslog.conf
/etc/rsyslog.conf(抜粋)
###############
#### RULES ####
###############

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*         /var/log/auth.log
*.*;auth,authpriv.none      -/var/log/syslog
# cron.*             /var/log/cron.log
daemon.*            -/var/log/daemon.log
kern.*              -/var/log/kern.log
lpr.*               -/var/log/lpr.log
mail.*              -/var/log/mail.log
user.*              -/var/log/user.log

cronの行のコメントアウトを消す. すると、cronのエラー文などが取得できる

このまま、cronにスケジュールを記述しても下のエラーが出てしまう。

/var/log/cron.log
raspberrypi /USR/SBIN/CRON[2331]: (CRON) info (No MTA installed, discarding output)

MTA導入

sudo apt-get install postfix

これでさっきのエラーは出ない

crontabに記述

今回は起動時に実行

crontab -e
# 起動時に実行
@reboot python /home/<ユーザー名です>/Desktop/test.py >/home/<ユーザー名です>/Desktop/error.log 2>&1

/home/<ユーザー名です>/Desktop/error.logにはpythonスクリプトで吐いたエラー内容が記述される。

再起動してみると、pyenvに入っているpythonでなくラズパイにプリインストールされているpythonで実行される。
試しにcronで登録したpythonを下のように書いてみましょう。

/home/pi/Desktop/test.py
import sys

print(sys.version)

すると

/home/pi/Desktop/error.log
2.7.1
# 今回はpyenvに入っているpython(3.4)を使いたい

んー、つらい...

よくよく、考えるとラズパイが立ち上がってからの順番が問題では?と思う
つまり、pyenvのpathが通る前にcronが実行されているのでは??

自分はpyenvのpathを ~/.bashrcに記述しているのでこれらのスクリプトもcronに登録

~/.bashrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

上のスクリプトをコピー、して登録

# 起動時に実行
@reboot export PYENV_ROOT="$HOME/.pyenv"; export PATH="$PYENV_ROOT/bin:$PATH"; eval "$(pyenv init -)"; python /home/<ユーザー名です>/Desktop/test.py >/home/<ユーザー名です>/Desktop/error.log 2>&1

これで、再起動すると

/home/pi/Desktop/error.log
3.4
# 今回はpyenvに入っているpython(3.4)を使いたい
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?