
Ich habe die Angewohnheit, schnell einige Erinnerungen einzurichten mit:
sleep $duration; notify-send $reminder_message
Aber in letzter Zeit musste ich mich bewegen und oft den Schreibtisch wechseln. Mir fiel auf, dass ich $reminder_message
später ankam als beabsichtigt. Der Übeltäter, so stellte sich heraus, ist: Wenn ich den Deckel schließe, wird alles zusammen mit meinem sleep
Befehl angehalten.
So habe ich es herausgefunden:
date; echo $duration; date -d "+$duration sec"; sleep "$duration"s; date
Wenn ich meinen Deckel zwischen den obigen Befehlen schließe, dann stimmen date
die date -d "+$duration sec"
Ergebnisse nicht überein. Wenn der Deckel jedoch nicht geschlossen ist, stimmen die Ergebnisse überein!
Als schnelle Lösung habe ich die Suspend-Funktion mit Deckelschließen wie folgt deaktiviert:
HandleLidSwitch=ignore
(folgenddiese Ask-Ubuntu-Antwort)
Jetzt funktionieren meine Sleep-Befehle so, wie ich es wollte. Aber das vollständige Deaktivieren des Suspend-Modus ist meiner Meinung nach einezu aggressivFix und einOverkill!
Gibt es eine einfachere Lösung? Ich möchte nur, dass meine sleep
Befehle nicht unterbrochen werden, wenn ich den Deckel schließe.
Antwort1
Nichts für ungut, aber wir haben hier vielleicht ein XY-Problem. Ihr Eindruck, dass die Lösung für IhrrealDas Problem liegt sleep
möglicherweise bei falscher Angabe. sleep
Die Überprüfung erfolgt, bis die angegebene Zeit abgelaufen ist. Diese Zeit wird gestoppt, wenn der Computer in den Ruhezustand wechselt.
Erwägen Sie stattdessen die Verwendung des at
Befehls, um die Ausführung bestimmter Jobs zu einem bestimmten Zeitpunkt zu planen.
at
funktioniert so:
echo "command_to_be_run" | at +30 minutes
wird einen Auftrag 30 Minuten später einplanen.
at
ist sehr ähnlich cron
, aber ein Job wird nur einmal ausgeführt. Es ist nicht standardmäßig installiert, kann aber mit installiert werden sudo apt install at
.