shairport syncをユーザサービス化 (original) (raw)

気づいたらまた接続するとshairport syncが落ちるようになってました。なんでだ…

で、自ユーザで起動すると普通に使えるのも前と同じ。なんでだ…前回グループをいじって動くようになったのは関係なかった模様。

自ユーザで動くならまあいいか、なんですが問題は起動方法。.bashrcから呼び出すと変なタイミングでフォアグラウンド化してCtrl+Cで中断しちゃったりするので微妙に不便。ならそれ以外の方法で起動するにはどうしたら?というのが今回のお題です。

真っ先に考えたのがcronだったんですが、ちょっと調べてみたらArch Linux系列って標準ではcronがインストールされないんですね。じゃあどうするの、と更に調べてみたらsystemdにユーザサービスとして登録すればいい、と。

wiki.archlinux.jp

なので、下記のページを参考に設定ファイルを書いて、ユーザサービスを有効化してみました。ありがとうございます。

zenn.dev

<設定ファイル作成> $ vi .config/systemd/$USER/shairport-sync.service [Unit] Description=AirPlay2 Receiver

[Service] ExecStart=/usr/bin/shairport-sync --log-to-syslog

[Install] WantedBy=default.target

<更新> $ systemctl --user daemon-reload

<有効化> $ systemctl --user enable shairport-sync.service Created symlink '/home/$USER/.config/systemd/user/default.target.wants/shairport-sync.service' → '/home/$USER/.config/systemd/user/shairport-sync.service'.

<有効化確認> $ systemctl --user list-dependencies default.target ● ├─shairport-sync.service 〜〜〜

ここまでしたらOS再起動してみて、無事ユーザ権限でshairport syncが起動していることを確認できました。やったぜ!

$ ps -ef|grep shair $USER 1473 1455 2 21:55 ? 00:00:44 /usr/bin/shairport-sync --log-to-syslog

ユーザ権限でsystemctlコマンドなんてサスペンドさせるときくらいしか使ったことがなかったので、とても新鮮でした。これでようやっと安定して使えそう。