次のシステムサービスを作成することは可能ですか?
[Service]
Type=forking
ExecStart=forksomething
systemctl --user start forksomething.service
最初の呼び出しが継続して実行されている間に2番目の呼び出しを許可しますか?
作ってみようかと思いましたが[email protected]
、最初は"forksomething@$(date +'%s').service"
少し陳腐なものが欲しかったです。 (編集:実際には、これはシンボリックリンクとデーモンのリロードも生成する必要があるため悪いです。)
ベストアンサー1
一度作成し[email protected]
て実行すると、systemctl daemon-reload
追加デーモンを再ロードすることなく、systemd
必要な数のサービスを開始できます。[email protected]
実際、あなたは[email protected]
実際にサービステンプレート。インスタンス名の後半を@
テンプレートのパラメータとして使用できます。たとえば、次のようにサービスを定義した場合:
[Service]
Type=forking
ExecStart=/usr/local/bin/forksomething "%i"
次に、次を実行します。
systemctl daemon-reload
systemctl start [email protected]
systemctl start [email protected]
systemctl start [email protected]
その後、systemdはコマンドを実行します/usr/local/sbin/forksomething 1
。/usr/local/sbin/forksomething 2
/usr/local/sbin/forksomething 3
この時点から起動するたびに、最初の2つのインスタンスが起動し続けるようにするには、と言います。このコマンドは、そのディレクトリへの適切なシンボリックリンクを自動的に生成します。systemctl enable [email protected]
systemctl enable [email protected]
/etc/systemd/system/<whatever>.target.wants/
サービステンプレートのインスタンスは、起動を試みることによって単に呼び出されます。シンボリックリンクは、一部のターゲットデバイスと継続的に接続したい場合にのみ必要です(通常、default.target
またはmulti-user.target
起動時に何かを開始したい場合)Before=some.target
。インスタンスを他のターゲットと関連付けるかどうかをテンプレートに表示します。