他のユーザーでコマンドを開始できるシステムサービスファイルを作成してみてください。

他のユーザーでコマンドを開始できるシステムサービスファイルを作成してみてください。

外部ファイルで定義されたユーザーとしてコマンドを実行できる一般的なシステムサービスファイルを持つ方法を探しています。これにより、異なるユーザーとして異なるサーバーインスタンスを起動できますが、同じバージョンが複数あることはできません。

頑張った

[Service]
Type=forking
# Specify the level of the myserver instances on this host.
EnvironmentFile=/data/myserver/instances/LEVEL
EnvironmentFile=/data/myserver/instances/%i/USER
ExecStart=/sbin/daemonize /data/myserver/bin/start.sh %i ${LEVEL}
ExecStop=/data/myserver/bin/stop.sh %i
User=$USER

環境ファイルにこれを持っています

USER=user1

環境ファイルを読む前に$ USERが評価されているようです。次のようなことは許可されますか?

[Service]
Type=forking
# Specify the level of the myserver instances on this host.
EnvironmentFile=/data/myserver/instances/LEVEL
EnvironmentFile=/data/myserver/instances/%i/USER
ExecStart=/sbin/daemonize /bin/sudo -u $USER /data/myserver/bin/start.sh %i ${LEVEL}
ExecStop=/data/myserver/bin/stop.sh %i
User=root

ベストアンサー1

Systemdは、テンプレート化されたサービス単位ファイルを使用してインスタンス化されたサービスをサポートします。 「サービステンプレート」を参照してください。https://www.man7.org/linux/man-pages/man5/systemd.service.5.html

一般的な例は、VNCサービステンプレート単位ファイル(TigerVNCサーバーによってインストールされます)です。以下はOpenVPNの例です。https://fedoramagazine.org/systemd-template-unit-files/

おすすめ記事