systemd service(daemon)
symlink service file
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
よくviとかで/etc/systemd/system/配下にxxxx.serviceファイル作る例を見ますがsystemctl editに—force —fullオプションつければファイル作ってくれるので便利です
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」) |
PIDFile | fork型サービスのメインプロセスのPIDファイル |
BusName | D-Bus型サービスのbus接続名 |
Restart | サービスプロセス停止時の再起動条件(デフォルトは「no」) |
PrivateTmp | このサービス専用の/tmpと/var/tmpを用意する |
not root
- 設定ファイルはhome以下に置く必要がある
- /etc/systemd 以下とかに置いてもダメ。~/.config/systemd/user/*.service を使わないと—userではうまくいかない。
- [Install]を必ず書く
[Install]
WantedBy=default.target
- —userモードにはmulti-user.targetが存在しない
- [Install]をいじったら systemctl —user enableを叩き直す