Slackアプリで作った自作ラズパイゼロ定点カメラをSystemdデーモンで自動起動するやり方
※ 当ページには【広告/PR】を含む場合があります。
2022/03/04
はじめに
Slackアプリ用のSystemdデーモンを仕込む
+ Linux系OSの起動直後に走る主要な起動プロセスの一つ
+ Systemd自身のプロセスIDはinitプロセスと呼ばれ、
常に1(PID=1)で実行状態になる
+ 登録しておいた複数のアプリケーションを
子プロセス(ユニットプロセス)として起動することができる
ラッパースクリプトを準備する
start-slack-app.sh
#!/bin/bash
export SLACK_BOT_TOKEN=xoxb-xxxxxxx-xxxxxxx-xxxxxxxxxxxxx
export SLACK_APP_TOKEN=xapp-x-xxxxxxxx-xxxxxxxx-xxxxxxxxxxxxxxx
WORK_DIR=[index.jsが存在するフォルダまでの絶対パス]
node $WORK_DIR/index.js
.bashrc
SLACK_BOT_TOKEN
SLACK_APP_TOKEN
$HOME
serviceファイルの作成と設置
.service
/etc/systemd/sytem/
/etc/systemd/system
$ ls -la /etc/systemd/system
-rw-r--r-- 1 root root 1552 Jul 20 2021 autologin@.service
drwxr-xr-x 2 root root 4096 May 7 2021 bluetooth.target.wants
lrwxrwxrwx 1 root root 42 May 7 2021 dbus-fi.w1.wpa_supplicant1.service -> /lib/systemd/system/wpa_supplicant.service
lrwxrwxrwx 1 root root 37 May 7 2021 dbus-org.bluez.service -> /lib/systemd/system/bluetooth.service
lrwxrwxrwx 1 root root 40 May 7 2021 dbus-org.freedesktop.Avahi.service -> /lib/systemd/system/avahi-daemon.service
lrwxrwxrwx 1 root root 45 May 7 2021 dbus-org.freedesktop.timesync1.service -> /lib/systemd/system/systemd-timesyncd.service
lrwxrwxrwx 1 root root 34 May 7 2021 dhcpcd5.service -> /lib/systemd/system/dhcpcd.service
drwxr-xr-x 2 root root 4096 May 7 2021 dhcpcd.service.d
drwxr-xr-x 2 root root 4096 May 7 2021 getty.target.wants
drwxr-xr-x 2 root root 4096 May 7 2021 getty@tty1.service.d
drwxr-xr-x 2 root root 4096 May 7 2021 halt.target.wants
drwxr-xr-x 2 root root 4096 Mar 3 02:09 multi-user.target.wants
drwxr-xr-x 2 root root 4096 May 7 2021 network-online.target.wants
drwxr-xr-x 2 root root 4096 May 7 2021 poweroff.target.wants
drwxr-xr-x 2 root root 4096 May 7 2021 rc-local.service.d
drwxr-xr-x 2 root root 4096 May 7 2021 reboot.target.wants
drwxr-xr-x 2 root root 4096 May 7 2021 remote-fs.target.wants
drwxr-xr-x 2 root root 4096 Feb 6 05:23 sockets.target.wants
lrwxrwxrwx 1 root root 31 Jul 20 2021 sshd.service -> /lib/systemd/system/ssh.service
drwxr-xr-x 2 root root 4096 May 7 2021 sysinit.target.wants
lrwxrwxrwx 1 root root 35 May 7 2021 syslog.service -> /lib/systemd/system/rsyslog.service
drwxr-xr-x 2 root root 4096 May 7 2021 timers.target.wants
[⭕⭕.service.d]
[⭕⭕.service]
/etc/systemd/system
/etc/systemd/system
slack-cam.service
[Unit]
Description=Slack Remoted Camera Service
After=network-online.target local-fs.target
ConditionPathExists=/root
[Service]
Type=simple
User=root
Group=root
Restart=no
ExecStart=[ラッパースクリプトが存在するフォルダまでの絶対パス]/start-slack-app.sh
[Install]
WantedBy=multi-user.target
/etc/systemd/system
$ sudo mv slack-cam.service /etc/systemd/system/
$ sudo chown root:root /etc/systemd/system/slack-cam.service
$ sudo chmod 644 /etc/systemd/system/slack-cam.service
$ ls -la /etc/systemd/system/ | grep slack-cam
-rw-r--r-- 1 root root 482 Mar 3 02:48 slack-cam.service
起動テスト
$ sudo systemctl daemon-reload
$ sudo systemctl start slack-cam
$ systemctl status slack-cam
● slack-cam.service - Slack Remoted Camera Service
Loaded: loaded (/etc/systemd/system/slack-cam.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-03-03 03:07:09 GMT; 24h ago
Main PID: 426 (start-slack-app)
Tasks: 12 (limit: 725)
CGroup: /system.slice/slack-cam.service
├─426 /bin/bash /*****************/start-slack-cam.sh
└─430 node /*****************/index.js
Mar 03 03:07:46 raspberrypi start-slack-app.sh[426]: ⚡️ Bolt app is running!
Systemdサービスの有効化
$ sudo systemctl enable slack-cam
$ sudo systemctl disable slack-cam
まとめ
参考サイト
記事を書いた人
ナンデモ系エンジニア
電子工作を身近に知っていただけるように、材料調達からDIYのハウツーまで気になったところをできるだけ細かく記事にしてブログ配信してます。
カテゴリー