systemd は「Multiple ExecStart= settings」を拒否します。

systemd は「Multiple ExecStart= settings」を拒否します。

Redis用のシステムサービスファイルを作成しようとしています。

これは私のファイルです:

[Unit]
PartOf=smp-data-services.target
Description=Redis persistent key-value database
After=network.target

[Service]
ExecStart=/opt/eg/share/redis/bin/redis-server
ExecStop=/opt/eg/share/redis/bin/redis-cli
Restart=on-failure
User=eg
Group=eg

[Install]
WantedBy=multi-user.target

私が何をしても、次のような結果が表示されます。

# systemctl daemon-reload

systemd: redis.service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.

次の問題なくコマンドラインからredisを起動できます。

/opt/eg/share/redis/bin/redis-server

redisデーモンの分岐プロセスは非標準なので、Type = forkingまたはoneshotを避ける必要があることを読んでいます。

答え1

[service]セクションでExecStartコマンドをクリーンアップする必要があります。

[Unit]
PartOf=smp-data-services.target
Description=Redis persistent key-value database
After=network.target

[Service]
ExecStart=
ExecStart=/opt/eg/share/redis/bin/redis-server
ExecStop=/opt/eg/share/redis/bin/redis-cli
Restart=on-failure
User=eg
Group=eg

[Install]
WantedBy=multi-user.target

答え2

ありがとうラ・ロンジャ、彼は正しいです。 /etc/systemd/system/redis.service.d/redis_systemd.conf に .conf ファイルがあります。一度削除した後、ほぼ動作しました!

答え3

実行サービスセクションにsystemctl edit redis
startwith行がある場合は、それを削除します。ExecStart=

このExecStart=行は変更できません。systemctl edit

関連情報