Linux
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
我終於找到瞭如何做到這一點。
這有點駭人聽聞的想法,但它確實有效。
我已經使用了這個執行緒的一部分:https ://stackoverflow.com/questions/25166085/how-can-a-systemd-controlled-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
這將在 shudown/reboot/halt/whatever 處執行。(不要忘記啟用它)
在我的腳本中,
/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 發送關閉消息,後者將關閉我的螢幕。