GNU/Linux >> Linux の 問題 >  >> Linux

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

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

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

[Unit]
Description=...

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

[Install]
WantedBy=multi-user.target

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

ファイルを作成したら、必ず systemctl daemon-reload および systemctl enable yourservice --now .

systemd IRC から入手しました。クレジットは mezcalero に送られます。


  • 開始直前にサービスを実行するには 再起動/シャットダウン/停止/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


私が見る限り、これは私が必要としているものです (しかし、正確な理由はわかりません)。

[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

Linux
  1. 権限を減らしてスクリプトの一部を実行するには?

  2. Systemd で tty を減らすには?

  3. Systemd :シャットダウン時のみ (再起動時ではなく) にスクリプトを実行する方法

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

  2. Systemdのスタートアップスクリプトを書く方法は?

  3. root アクセスで実行するように Systemd サービスを構成する

  1. Linux – SystemdでTtyを減らす方法は?

  2. ネットワークサービスでStandardioを使用して単純なスクリプトを作成するようにSystemdを構成するにはどうすればよいですか?

  3. Pythonスクリプトをサービスとして実行するには?