web-dev-qa-db-ja.com

バックグラウンドサービスへのコマンドの入力

カスタムgmodゲームサービスのバックグラウンドでカスタムサービスを実行しています。独自のgmod.serviceファイルを作成したので、今ではservice gmod startで起動できます。以下をご覧ください。たとえば、マップを変更できるように、ターミナルまたはbashスクリプトからそのサービスにコマンドを入力することは可能ですか?前もって感謝します

[Unit] 
Description=Gmod server 
After=network.target 
[Service] 
Type=simple 
ExecStart=/bin/bash /home/server/Documents/Servers/Gmod/run_gmod.sh 
[Install] 
WantedBy=multi-user.target
2
Kevin Snijder

Systemdユニットテンプレートファイルを使用する

Systemdユニットテンプレートを使用できる場合の良い例です。引数を指定してsystemdサービスを呼び出し、その引数をサービス定義でeに使用することができます。 g。実行されるプログラムに渡します。ケースの例を次に示します。

ユニットを

/etc/systemd/system/[email protected]

ファイルを次のように変更します。

[Unit] 
Description=Gmod server (map: %I)
After=network.target 
[Service] 
Type=simple 
ExecStart=/bin/bash /home/server/Documents/Servers/Gmod/run_gmod.sh %i
[Install] 
WantedBy=multi-user.target
DefaultInstance=myDefaultMap

(この時点でsystemctl daemon-reloadを実行して、変更されたファイルをsystemdに読み取らせる必要がある場合があります)。この後、次のような引数を使用してgmodを起動できます。

systemctl start [email protected]

Systemdはテンプレートファイルを使用し、I%を引数に、%iをシェル引用引数に置き換え、[email protected]という名前のサービスインスタンスとして起動します。これを確認するには、次を実行します

systemctl status gmod@myMapName

次のように、ブート時にデフォルトのインスタンスを自動的に開始させることもできます。

systemctl enable gmod@

この方法では、プログラムで許可されている場合、gmodの複数のインスタンスを起動することもできます。トピックの詳細については、 systemd.unit(5) のマニュアルページを参照してください。

3
Sebastian Stark