2021/09/10
Raspberry Pi起動時に温度取得のpythonを自動起動する設定を実施してみました。
この設定を実施することによって、sshでログインして、pythonのプログラムを動かすコマンドを手動で投入する必要がなくなります。Raspberry Pi2を起動するだけでプログラムが動作します。
プログラム実行のためのシェルを作成
ディレクトリ/home/piに「ondo.sh」というファイルを以下の内容で作成し、パーミッションを変更します。自動的に動かしたいプログラムはpythonでつくった「app_c.py」です。
#!/bin/sh
cd /home/pi/iot-hub-python-raspberrypi-client-app
python app_c.py <your Azure IoT hub device connection string>
パーミッションを変更します。755の意味合いは [rwxr-xr-x]
- 所有者:読み・書き込・実行OK
- グループ:読み・実行OK
- その他のユーザ:読み・実行OK
$ sudo chmod 755 ondo.sh
etc/rc.localファイルを修正
etcディレクトリにある、rc.localファイルに、exit 0の前に以下ように追記し上書きします。
sh /home/pi/ondo.sh
exit 0
再起動すると、自動的に起動してくるようになりました。起動毎にログインして、コマンド入力する必要がなくなったので楽ちんです。
起動中のpythonプロセスだけを停止させる方法
上記手順で自動開始されたプログラムのみを停止させるには、以下の操作を実施し、プロセスを停止します。
動作しているpythonプロセスの番号を確認
$ ps aux | grep python
root 433 10.2 1.9 43540 18168 ? Sl 14:06 0:09 python app_c.py HostName=******************;DeviceId=********;SharedAccessKey=***********************************
pi 838 0.0 0.0 4372 568 pts/0 S+ 14:08 0:00 grep --color=auto python
動作しているプログラムがapp_c.pyなので、プロセス番号が433であることがわかります。
プロセスをkillコマンドで停止します。なんだか物騒なコマンドですよね。私は”プロセスを切る”と覚えました。
$ sudo kill 433
停止したか確認します。プロセス番号443が表示されていないので、停止したのがわかります。
$ ps aux | grep python
pi 892 0.0 0.0 4372 560 pts/0 S+ 14:09 0:00 grep --color=auto python
プロセス番号を調べずに、直接プログラムを停止させるpkillコマンドは下記の通りです。プロセス番号を調べる一手間がないので楽ですね。
$ sudo pkill -f /home/pi/iot-hub-python-raspberrypi-client-app/app_c.py
自動起動の設定をしたプログラムはこちら。