Linux(Raspberry Pi)でプログラムを走らせたままにしておく(screen, service)

Raspberry Piを使用していル際に,データ受信スクリプト等を走らせたまま

別作業を行なう方法として,screenコマンド,serviceの使い方を記載します.

他にも方法があると思いますが,以下の2つが確実性があり使いやすかったです.

①screenコマンド

 screenコマンドでは,単独のセッションを立ち上げて

 その中でスクリプトを走らせ別のセッションに移ることができます.

 ぱぱっとスクリプトを裏で動かしておきたいときに便利です.

 主に以下の5つのコマンドを知っておけばOKです.

 (a)新規セッションを作成する

 $ screen

 (b)セッションを離れる

 Ctrl+aを押した後dを押す

 (c)セッション一覧を確認

 $ screen -ls

 数字がセッションのID

 (d)セッションに再参加する

 $ screen -r XXXXX

 XXXXXは(c)で調べたセッションID

 (e)セッションを削除

 $ rm -rf /var/run/screen/S-UU/XXXXX.pts-*.raspberrypi

 UUはユーザー名,XXXXXはセッションID,*はよくわかりません.

 S-UU以下は(c)で調べれば名前がわかります.

②service

 スクリプトをOSのサービスとして登録しておけます.

 バックグラウンドで動かすことができるのはもちろん,

 電源投入次に自動で実行させることができます.

 (a).serviceファイルを作成

  サービス内容を記述するファイルを作成します.場所は/etc/systemd/systemに置いておきます.

  例として,シリアル通信でデータ受信するpythonスクリプトを登録します.

  $ sudo nano test.service

[Unit]

Description=SerialDataReciever

After=syslog.target

[Service]

Type=simple

WorkingDirectory=/home/pi/public_html/data

ExecStart=/usr/bin/python /home/pi/python/serialrcv.py

TimeoutStopSec=5

StandardOutput=null

[Install]

WantedBy = multi-user.target

 (b)サービスの開始

  $ sudo systemctl start test

 (c)サービスの停止

  $ sudo systemctl stop test

 (d)サービスの自動起動への登録

  $ sudo systemctl enable test

 (e)サービスの自動起動解除

  $ sudo systemctl disable test