Die Verwendung von Cron ist schön, wenn Sie einen Server haben oder Ihren Computer niemals ausschalten. Was ist jedoch, wenn Ihr Laptop in der genauen Minute schläft, die Sie für Ihr Skript ausführen können? Was ist, wenn Sie neu starten müssen? Was ist, wenn Ihr Computer tatsächlich ausgeführt wird, Sie aber lieber warten möchten, bis er mit geschlossenem Deckel untätig ist, bevor Sie einen Sicherungsprozess oder ein anderes intensives Skript ausführen?
Mit LazyCron "wird Ihr Computer irgendwann dazu kommen." LazyCron verfolgt eine lackierere Herangehensweise an das Leben. Sicher, es wird den Job erledigen, aber es gibt keinen Ansturm. Sie setzen keine Zeit zum Ausführen, Sie setzen einen Bereich. Besser noch, wenn Skripte ausgeführt werden und auf einen Fehler stoßen, wird LC eine Nachricht eröffnen, damit Sie wissen, dass etwas schief gelaufen ist, anstatt nur stillschweigend zu scheitern.
Sie bearbeiten Ihre Datei "Zeitplan.txt" mit Programmen zum Ausführen:
"Zeit" ist das Fenster, wenn das Skript ausgeführt wird. Sie können mehrere Zeitfenster mit Kommas getrennt lassen. Zum Beispiel: 1-3am, 2pm-4pm, 11:30-11:34 -Spielen Sie mit diesen Zahlen herum; Das System ist sehr flexibel. Wenn Sie mein Skript ausführen, werden Sie das nächste Mal für jedes Programm angezeigt, damit Sie bestätigen können, dass es das tut, was Sie erwartet haben.
Nehmen wir beispielsweise an, Sie haben ein Sicherungsskript, das Sie nur ausführen möchten, wenn der Computer online ist, aber sonst nicht verwendet wird. In schedule.txt unten habe ich den Zeitbereich auf 20:30 Uhr und 3 Uhr morgens festgelegt. Die Frequenz wird auf * gesetzt, was bedeutet, dass sie nur einmal während dieses Zeitraums ausgeführt wird. Das Datum ist auf sat-sun eingestellt, was bedeutet, dass es nur samstags und sonntags läuft. Das Feld des Anforderungen besagt, dass der Computer mindestens 5 Minuten lang im Leerlauf sein muss, eingeschaltet und online. Andernfalls wartet das Skript, bis diese Bedingungen erfüllt sind.
Sie können auch verschiedene Anforderungen festlegen, wie z. Siehe vollständige Optionen unten im Abschnitt [Anforderungen] (# Anforderungen).
#Time Frequency Date Requirements Script Path
8:30pm-3am * sat-sun idle 5m, plugged, online daily_backup_script_path_goes_here.sh
* 1h * busy 10, idle 5 my_hourly_backup_script.py
2pm-8pm 1h elapsed * online a_daily_script.py
-5pm * m-f random 8h A_surprise_everyday.py
4-6pm * 2nd Thursday busy 5m mpg123 'Libera - Going Home.mp3'
* * March 14 * pi_day.py
* * 1st-2nd * zenity --info --text="Monthly todo"
* * * start 1 run_at_startup.sh
Fenster, wenn das Skript ausgeführt wird.
- `1-3am, 2pm - 4pm` (You can have multiple windows separated with commas.)
- `-5pm` will run until 5pm everyday
- A `*` will run 24 hours a day.
Play around with these numbers, the system is very flexible. When you run my script it will show you the next time window available for each program.
Wie oft läuft das Programm. M = Minuten, H = Stunden und so weiter. Mein Skript sollte hier die meisten natürlichen Spracheingaben zulassen.
- 1h will run every hour
- 1h elapsed will only count time when the computer is actively in use by user.
- A `0` will run as often as possible.
- A `*` will only run once a day.
Normalerweise als Reichweite festgelegt, um es an bestimmten Wochentagen auf den Lauf zu beschränken: Beispiele: MF jeden 2. Donnerstag
- `m-f` will run monday through friday
- `2nd Thursday` will run every 2nd thursday of the month
- `1-2nd` will run on the first two days of the month
- A `*` will run on any day of the year.
Eine Komma -getrennte Liste der zusätzlichen Anforderungen, die das Skript ausführen müssen. Wie in Zeit, Häufigkeit und Datum sind die meisten natürlichen Spracheingaben zulässig. Verfügbare sind wie folgt:
| Zeitanforderungen | |
idle | Zeit, für das der Computer im Leerlauf war. |
busy | Zeit, für den der Computer kontinuierlich beschäftigt war |
elapsed | Gesamtzeit muss Computer verwendet werden. |
today | Die Gesamtzeit heute muss der Computer verwendet werden. |
| Anforderungen an Computerstaat | |
online | Haben wir Internetzugang? |
closed/open | Deckel muss geschlossen sein. |
(un)plugged | Das Netzkabel muss angebracht werden. |
lowbatt | Laufen Wenn der Batterieprozentsatz unter einen bestimmten Prozentsatz fällt. |
minbatt | Laufen Sie, wenn der Batterieprozentsatz über einem bestimmten Prozentsatz liegt. |
disk | Maximale Stromversorgungsnutzung zum Starten des Prozesses, ausgedrückt in KB/S |
cpu | Maximale aktuelle CPU -Nutzung zum Starten des Prozesses, ausgedrückt als Prozentsatz der kombinierten CPU -Leistung. |
network | Maximale aktuelle Netzwerknutzung zum Starten des Prozesses, ausgedrückt als KB/S |
ssid | Überprüfen Sie, ob der WLAN -Netzwerkname vor dem Ausführen übereinstimmt. |
| Wann und wie oft | |
start | Führen Sie dies nur oft beim Start. 0 = unendlich |
skip | Überspringen Sie diesen Vorgang mit dem Start x -mal aus. |
max | Maximale Häufigkeit, um ein Skript auszuführen. |
reps | Laufen Sie nur so oft pro Tag oder pro Zeitfenster. |
delay | Verzögerung vor dem Starten des Skripts |
suspend | Führen Sie das Skript auf Suspend aus (falls ein Skript mit einer Option "Zuordnen" ausgelöst). |
wake | Führen Sie das Skript nach der Suspendierung aus |
random | Das Skript wird zufällig ausgeführt Beispiel: Random 8h wird (im Durchschnitt) alle 8 Stunden laufen. An manchen Tagen kann es 5+ Mal dauern, andere Tage gar nicht. So funktioniert Zufälligkeit. |
| Schleifen | |
loop | Führen Sie das Skript so oft aus, wenn das Skript endet. Schleife 0 = Schleife für immer. Zählt nicht gegenüber Wiederholungen. |
retry | So oft nach dem Scheitern wiederholen. Zählt nicht gegenüber Wiederholungen. |
loopdelay | Verzögern Sie dies lange nach der Schleife oder Wiederholung. Standard = 60 Sekunden Wenn nicht eingestellt. |
delaymult | Verzögerung nach jeder Schleife multiplizieren. Standard auf 2 (doppelte Verzögerung jede Schleife im Wiederholungsmodus) |
| Umfeld | |
nice | Starten Sie das Skript mit dem netten Wert von Unix. Höhere Werte sind für andere Prozesse schöner |
nologs | Protokolle löschen, wenn das Skript Code 0 zurückgibt (alles in Ordnung) |
noerrs | Benachrichtigen Sie keine Skriptfehler |
localdir | Führen Sie ein Skript aus demselben Verzeichnis aus, in dem es sich befindet. |
timeout | Zeit, um das Skript auszuführen, bevor Sie es töten. |
environs | Stellen Sie die Umgebungsvariablen vor dem Start ein. Format: environs VAL1=TEXT $ VAL2=TEXT (separate Variablen mit $) |
shell | Setzt subprocess.run(shell=True)Ermöglicht den Zugriff auf erweiterte Shell -Funktionen im Befehl, wird jedoch als Sicherheitsrisiko angesehen. |
Erinnerung : Verwenden Sie * für Felder, die Sie nicht ausfüllen müssen. Alle 5 Felder müssen mindestens 1 Zeichen enthalten.
xprintidle ist erforderlich, um die Anzahl der Sekunden zu erhalten, die Computer im Leerlauf waren.
Nutzung der Systemüberwachungsversorgungsunternehmen für die cpu , network oder disk -Flags; Bitte installieren Sie psutil mit: python3 -m pip install psutil
Sie sind sich nicht sicher, ob Ihr Zeitplan richtig funktioniert? Führen Sie das Programm mit der Option -Testing -Option aus oder geben Sie einfach einen ## vor jedem Skriptpfad, um anzuzeigen, was es tun würde. Protokolle werden in /tmp /lazycron_logs aufbewahrt
--idlebatt (minutes) --idle (minutes) -nach so vielen Minuten schlafen gehen, während sie angeschlossen sind.
suspend -Option in die Requirements hinzu, um sie vor der Aussetzung auszuführen. - LC wartet 1 Zyklus nach dem Ausführen eines Suspend -Programms, bevor der Computer in den Schlaf gebracht wird. Wenn der Computer in diesem Zeitraum Aktivität zeigt, wird der Schlaf abgesagt. Meine Skripte laufen nur einmal am Tag!
0 enthält, nicht a *Xprintidle konnte Diplay nicht eröffnen
crontab oder einem anderen Nicht -GUI -Terminal starten, müssen Sie zuerst die Anzeige exportieren. Zum Beispiel export DISPLAY=:0ssh ausgeführt werden, stellen Sie sicher, dass Sie mit dem -x -Flag an die Sitzung anfügen: ssh -X Einrichten Sie auch die Weiterleitung von X11forening X11Forwarding yes IN /etc/ssh/sshd_config und starten Sie SSH neu.Wie erhalte ich Nachrichten auf dem Desktop, wenn ein Programm fehlschlägt?
sudo pip install PyQt6
oder installieren Sie die Drittanbieter -App: zenity sudo apt install zenity
Was bedeutet die Liste der Zahlen jedes Mal, wenn ein Programm gestartet wird --verbose = 2 mode?
Es ist eine Geschichte der Laufzeiten. Anstatt den Unix -Zeitstempel aufzunehmen, fand ich es kompakter, die Zahlensekunden seit Beginn des Protokolls aufzuzeichnen.
Fügen Sie diese Zahlen zu Beginn des Protokolls zum Zeitstempel hinzu, um einen exakten Unix -Zeitstempel zu erhalten, an dem jedes Programm gestartet wurde.
Ideen, die in Zukunft implementiert werden könnten. Dateien Sie einen Fehlerbericht mit dem Tag "Vorschlag", wenn diese oder eine andere Idee Sie interessiert:
Boolesche Logik für Anforderungen: idle 2m OR today 3h
AND .MAC / Windows -Unterstützung
Neue Anforderungsfelder, lassen Sie mich wissen, was Sie sehen möchten!