ユーザ権限でsystemedのサービスを稼働させる

2023年4月30日

ラズパイでシステム起動時に自作アプリケーションを動作させるため、ユーザ権限でsystemdのサービスを稼働させるやり方です。

ユニットファイルの雛形

例えばサービス名が foobar だとすると、ユニットファイルのファイル名は ~/.config/systemd/user/foobar.service となります。

ディレクトリはなければ自分で作成します。

[Unit]
Description=foobar service

[Service]
ExecStart=起動コマンド
ExecStop=停止コマンド
Restart=always

[Install]
WantedBy=default.target

サービスを登録

systemctl --user enable foobar

サービスの起動・終了

“–user" を追加する以外は通常の systemctl の操作と同じ。

systemctl --user start foobar
systemctl --user stop foobar

システム起動時に自動起動

システム起動時に自動起動するためにもうひと手間必要。

sudo loginctl enable-linger ユーザー名

参考サイト

ユーザー権限で systemd のサービスを稼働させる方法 – pyopyopyo – Linuxとかプログラミングの覚え書き
サーバー起動時に非rootユーザーでsystemdを使ってサービスを立ち上げる – Qiita

Linux,Raspberry Pi

Posted by toshyon