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

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

これにはシャットダウン/再起動時にスクリプトを実行する多くのソリューションがありますが、私のスクリプトはシャットダウン時にのみ実行したいと思います。

スクリプトを/usr/lib/systemd/systemd-shutdownに入れて、示されているように$ 1パラメータを確認してみました。ここしかし、うまくいきません。

どんなアイデアがありますか?

システム: gnome-shell を含む Archlinux

$systemctl --version                                                                                                                                                                                 
systemd 229
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN

ベストアンサー1

ついにこれを行う方法を見つけました。

少し古い時代のアイデアですが、効果があります。

私はこのスレッドの一部を使用しました:https://stackoverflow.com/questions/25166085/how-can-a-systemd-control-service-distinguish- Between-shutdown-and-reboot

そしてこのスレッドは: シャットダウンする前にsystemdを使用してスクリプトを実行する方法は?

このサービスを作成しました/etc/systemd/system/shutdown_screen.service

[Unit]
Description=runs only upon shutdown
Conflicts=reboot.target
After=network.target

[Service]
Type=oneshot
ExecStart=/bin/true
ExecStop=/bin/bash /usr/local/bin/shutdown_screen
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

終了/再起動/停止/何でも実行されます。 (有効にすることを忘れないでください)

私のスクリプトに/usr/local/bin/shutdown_screen 以下を追加しました。

#!/bin/bash
# send a shutdown message only at shutdown (not at reboot)    
/usr/bin/systemctl list-jobs | egrep -q 'reboot.target.*start' || echo "shutdown" | nc 192.168.0.180 4243 -w 1

これにより、画面が消える終了メッセージがArduinoに送信されます。

おすすめ記事