web-dev-qa-db-ja.com

シャットダウンの直前にsystemdでスクリプトを実行する方法は?

シャットダウンの直前と[install]が破棄される前にsystemdが/home/me/so.plを実行できるように、/proc/self/net/devセクションに何を入れる必要がありますか?

[Unit]
Description=Log Traffic

[Service]
ExecStart=/home/me/so.pl

[Install]
?
64
sid_com

推奨される解決策は、サービスユニットを通常のサービスとして実行することです。[Install]セクションをご覧ください。したがって、すべてを逆に考える必要があります。依存関係も同様です。シャットダウンの順序が逆の起動順序だからです。そのため、スクリプトはExecStop=に配置する必要があります。

次の解決策が私のために働いています:

[Unit]
Description=...

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=<your script/program>

[Install]
WantedBy=multi-user.target

ExecStartアクションがない場合は、RemainAfterExit=trueが必要です。

ファイルを作成したら、必ずsystemctl daemon-reloadおよびsystemctl enable yourservice --nowを使用してください。

Systemd IRCから取得しました。クレジットはメスカレロに送られます。

76
Matthias

私が見る限り、これは私が必要とすることを行います(しかし、その理由は正確にはわかりません)。

[Unit]
Description=Log Traffic
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target


[Service]
ExecStart=/usr/local/bin/Perl /home/me/log_traffic.pl --stop
Type=oneshot
8
sid_com
  • サービスを実行する開始する直前再起動/シャットダウン/停止/ kexecサービス(つまり、ルートファイルシステムが読み取り専用で再マウントされる前の最後の瞬間)このサービス構成を使用します。

    [Unit]
    Description=Save system clock on shutdown
    DefaultDependencies=no
    After=final.target
    
    [Service]
    Type=oneshot
    ExecStart=/usr/lib/systemd/scripts/fake-hwclock.sh save
    
    [Install]
    WantedBy=final.target
    

    それを有効にする:

    systemctl enable my_service.service
    
  • スクリプトを実行するには実際の直前reboot/shutdown/halt/kexec(ルートファイルシステムに書き込めないため、読み取り専用で再マウントされたため)このスクリプト実行可能ファイルを/usr/lib/systemd/system-shutdownディレクトリに追加します。

    実際のシステムを実行する直前にhalt/poweroff/reboot/kexec systemd-shutdownはすべての実行可能ファイルを/ usr/lib/systemd/system-shutdown /で実行し、「halt」、「poweroff」、「reboot」のいずれかの引数を渡します選択したアクションに応じて、 "または" kexec "。このディレクトリ内のすべての実行可能ファイルは並行して実行され、すべての実行可能ファイルが終了する前にアクションの実行は継続されません。

こちらもご覧ください:

https://www.freedesktop.org/software/systemd/man/bootup.html

https://www.freedesktop.org/software/systemd/man/systemd-halt.service.html

6

完全にはわかりませんが、明示的に追加したのに、インストールパーツは必要ないと思います。私もそれをテストしませんでしたが、それはあなたが始めるのに役立つはずだと思います:

[Unit]
Description=Log Traffic
Requires=network.target
After=network.target
Before=shutdown.target
DefaultDependencies=no

[Service]
ExecStart=/home/me/so.pl
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=shutdown.target
6
Ulrich Dangel