systemd service(daemon)

sudo systemctl link service/koreaderSync.service unable to use basic ln link, not work. use systemctl link

edit service

26.3. ネットワークの開始後に systemd サービスが起動する設定 Red Hat Enterprise Linux 8 | Red Hat Customer Portal

systemdで自作サービスを作る時の為のメモ

よくviとかで/etc/systemd/system/配下にxxxx.serviceファイル作る例を見ますがsystemctl editに—force —fullオプションつければファイル作ってくれるので便利です

# systemctl edit --force --full sample.service

after/before

10.6. systemd のユニットファイルの作成および変更 Red Hat Enterprise Linux 7 | Red Hat Customer Portal

Systemd入門(4) - serviceタイプUnitの設定ファイル - めもめも

[Unit]
Description=
After=syslog.target network.target auditd.service
[Service]セクション

主なオプションは次のとおりです。

オプション説明
ExecStartサービス起動コマンド
ExecReloadサービスリロードコマンド
ExecStopサービス停止コマンド
ExecStartPre/ExecStartPostサービス起動前後の追加コマンド(サービス起動判定には関連させたくないコマンドを記載)
ExecStopPostサービス停止後に実行するコマンド(サービスが異常停止した際にも実行される)
EnvironmentFile環境変数を読み込むファイル
Typeサービスプロセスの起動完了の判定方法(デフォルトは「simple」)
PIDFilefork型サービスのメインプロセスのPIDファイル
BusNameD-Bus型サービスのbus接続名
Restartサービスプロセス停止時の再起動条件(デフォルトは「no」)
PrivateTmpこのサービス専用の/tmpと/var/tmpを用意する

not root

サーバー起動時に非rootユーザーでsystemdを使ってサービスを立ち上げるsystemd - Qiita

  • 設定ファイルはhome以下に置く必要がある
    • /etc/systemd 以下とかに置いてもダメ。~/.config/systemd/user/*.service を使わないと—userではうまくいかない。
  • [Install]を必ず書く
[Install]
WantedBy=default.target
  • —userモードにはmulti-user.targetが存在しない
  • [Install]をいじったら systemctl —user enableを叩き直す