
Wenn ich den Einschaltknopf drücke, möchte ich ein Skript ausführen. Für dieses Szenario sagen wir file.sh. Wenn ich also den Einschaltknopf drücke, möchte ich file.sh und nur file.sh ausführen.
Die meisten Lösungen, die ich gefunden habe, beinhalteten das Bearbeiten von /etc/acpi/powerbtn.sh
, aber diese Datei existiert auf meinem System nicht. (Ich verwende Ubuntu 19.04.) Ich habe versucht, sie zu erstellen und mit dem Standardinhalt zu füllen, aber es hat nicht funktioniert. Ich habe auch versucht, mit auf Tastendrücke zu warten acpi_listen
, aber beim Drücken der Tasten passierte nichts. Ich weiß also nicht, ob ich es einfach falsch gemacht habe oder was. Ich habe versucht, mit zu verwenden xev
, das zwar Tastenereignisse aufnahm, aber nichts registrierte, als ich den Einschaltknopf drückte.
Weiß jemand, wie das geht oder was ich falsch mache?
PS: Ich sollte erwähnen, dass ich eine Lösung bevorzuge, die über die Befehlszeile ausgeführt werden kann, idealerweise eine ohne Software von Drittanbietern. Danke.
Ähnliche Frage, aber ohne Lösungen:
https://askubuntu.com/questions/473693/run-a-script-when-power-button-is-pushed
Suche im Grunde nach dem Linux-Äquivalent dessen, was sie hier gemacht haben:
https://stackoverflow.com/questions/12434863/executing-a-batch-script-on-windows-shutdown
BEARBEITEN: Folgendes bekomme ich vom Syslog:
Feb 9 13:01:01 joe-Aspire-E5-576G gnome-session-binary[1624]: Entering running state
Und dies ist meine Datei in Ereignissen:
event=button/power action=/home/ragnvaldr/Desktop/test/sc.sh
`
Antwort1
Ihre Frage wird beantwortet imBEISPIELAbschnitt von man acpid
. Ich werde mich Ihren Bedürfnissen anpassen.
- Erstellen Sie
root
eine Datei mit dem Namen/etc/acpi/events/power
und dem Inhalt etwa:
event=button/power
action=/usr/bin/logger "ACPI_POWER_BTTN_TEST: %e"
Dann renne
service acpid restart
.Verfolgen Sie die
syslog
Datei folgendermaßen/usr/bin/tail -f /var/log/syslog
Drücken Sie die Einschalttaste, um Ihre Testnachricht anzuzeigen
syslog
.Ändern Sie die
action=
Zeile in derpower
Datei entsprechend, damit sie auf Ihr benutzerdefiniertes Skript verweist.
Fehlerbehebung:
acpid
Überprüfen Sie nach dem Neustartacpid
mithilfe despidof acpid
Befehls, ob es tatsächlich ausgeführt wird.Funktioniert Ihr Skript wie erwartet? Verwenden Sie vollständige Pfadnamen für Befehle in Ihrem Skript.nichtNehmen Sie einen beliebigen Wert für an
PATH
.Im obigen Beispiel habe ich den
/usr/bin/logger
Befehl verwendet, um auf einfache Weise irgendwo etwas zu protokollieren (/var/log/syslog
). Alternativ können Sie/tmp
zu Testzwecken auch etwas in eine Datei unter schreiben.Es wurde (von @nathan) berichtet, dass einige Fenstermanager auch den Einschaltknopf erfassen. Es kann hilfreich sein, sicherzustellen, dass
/etc/systemd/logind.conf
die Zeile vorhanden istHandlePowerKey=ignore
, sodasssystemd-logind.service
der Einschaltknopf ignoriert wird.
Antwort2
Suche im Grunde nach dem Linux-Äquivalent dessen, was sie hier gemacht haben:https://stackoverflow.com/questions/12434863/executing-a-batch-script-on-windows-shutdown
Wenn Sie dies tun möchten, können Sie Skripte ausführen, wenn das System heruntergefahren wird (oder in den Ruhezustand versetzt wird), indem Sie densystemd
Infrastruktur.