systemdはinit 0またはinit 6の直後に最初のタスクをどのように実行しますか?

systemdはinit 0またはinit 6の直後に最初のタスクをどのように実行しますか?

私の/etc/systemd/system/myshutdown.serviceもの

#!/bin/bash

[Unit]
Description=license administration shutdown
DefaultDependencies=no
After=final.target

[Service]
Type=oneshot
ExecStart=/root/scripts/license_administration_shutdown.sh

[Install]
WantedBy=final.target

私は私が始めたそのサービスとそのシステムサービスを殺すためにlicense_administration_shutdown.sh何かをしました。lmutil lmdown -force/root/scripts/license_administration.sh

init 6私の質問は、init 0終了スクリプトがすぐに実行されることを望むのか、または完了後に最初にすべきことの1つで、上記のシステムサービス構文が正しいことです。私の意図は、lmgrdに責任があると思われるプロセスを終了することです。セッションでジョブの停止が実行されています。警告:シャットダウン/再起動時に1分30秒の不快な遅延が発生します。

init 6上記のサービスに高い優先順位を付けるか、完了したらすぐに発生させるために追加または変更できる構文はありますか?init 0

答え1

サービスの停止サービスを作成するのではなく、ExecStopPostライセンスマネージャサービスにタスクを追加するのが最善の選択肢かもしれません。

ライセンスマネージャがデフォルトの依存関係を使用している場合は、自動的にshutdown.targetと競合します。デフォルトの依存関係を使用しない場合は、Conflicts=shutdown.targetライセンスマネージャのサービス説明に追加できます。

システムがシャットダウンまたは再起動したときにshutdown.targetを呼び出してこれを行います。これは(ほとんどの場合)実行中のすべてのサービスと自動的に競合します。ライセンスマネージャサービスが停止し、その一部として指定されたコマンドが実行されますExecStopPost=

関連情報