Utiliser Cron est sympa si vous avez un serveur ou ne désactivez jamais votre ordinateur, mais que se passe-t-il si votre ordinateur portable est endormi pendant la minute exacte que vous avez définie pour exécuter votre script? Et si vous devez redémarrer? Et si votre ordinateur s'exécute réellement, mais que vous préférez attendre qu'il soit inactif avec le couvercle fermé avant d'exécuter un processus de sauvegarde ou un autre script intensif?
Avec Lazycron, "Votre ordinateur s'y arrivera finalement." Lazycron adopte une approche plus maladiologique de la vie. Bien sûr, cela fera le travail, mais il n'y a pas de précipitation. Vous ne définissez pas de temps pour s'exécuter, vous définissez une plage. Mieux encore, chaque fois que les scripts s'exécutent et rencontrent une erreur, LC apparaîtra pour vous faire savoir que quelque chose s'est mal passé au lieu d'échouer silencieusement.
Vous modifiez votre fichier schedule.txt avec des programmes à exécuter:
"Le temps" est que la fenêtre est lorsque le script est autorisé à s'exécuter. Vous pouvez avoir plusieurs fenêtres de temps séparées avec des virgules. Par exemple: 1-3am, 2pm-4pm, 11:30-11:34 - Jouez avec ces chiffres; Le système est très flexible. Lorsque vous exécutez mon script, il vous affichera la prochaine fenêtre de temps disponible pour chaque programme afin que vous puissiez confirmer qu'il fait ce que vous attendez.
Par exemple, disons que vous avez un script de sauvegarde que vous souhaitez uniquement exécuter lorsque l'ordinateur est en ligne, mais pas autrement utilisé. Dans schedule.txt ci-dessous, j'ai réglé la plage de temps entre 20h30 et 3h du matin. La fréquence est définie sur * ce qui signifie qu'elle ne fonctionnera qu'une seule fois au cours de cette période. La date est fixée à sat-sun ce qui signifie qu'elle ne fonctionnera que les samedis et dimanches. Le champ d'exigences indique que l'ordinateur doit être inactif pendant au moins 5 minutes, branché et en ligne. Sinon, le script attendra que ces conditions soient remplies.
Vous pouvez également définir diverses exigences, telles que: l'ordinateur doit être inactif pendant un certain temps, occupé, branché, en ligne, le couvercle doit être fermé et plus. Voir les options complètes ci-dessous dans la section [exigences] (# exigences).
#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
Fenêtre lorsque le script est autorisé à s'exécuter.
- `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.
À quelle fréquence le programme fonctionne. M = minutes, h = heures et ainsi de suite. Mon script devrait permettre la plupart des entrées de langage naturel ici.
- 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.
Généralement définie comme une plage pour la limiter à courir pour certains jours de la semaine: Exemples: MF, tous les 2e jeudi
- `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.
Une liste séparée par des virgules des exigences supplémentaires nécessaires à l'exécution du script. Comme avec le temps, la fréquence et la date, la plupart des entrées de langage naturel sont autorisées. Les disponibles sont les suivants:
| Exigences de temps | |
idle | Le temps où l'ordinateur a été inactif. |
busy | Le temps que l'ordinateur a été continuellement occupé pendant |
elapsed | L'ordinateur de temps total doit être utilisé pour. |
today | Temps total Aujourd'hui pour lequel l'ordinateur doit être utilisé. |
| Exigences d'état informatique | |
online | Avons-nous un accès Internet? |
closed/open | Le couvercle doit être fermé. |
(un)plugged | Le cordon d'alimentation doit être fixé. |
lowbatt | Exécutez si le pourcentage de batterie tombe en dessous d'un certain pourcentage. |
minbatt | Exécutez si le pourcentage de la batterie est supérieur à un certain pourcentage. |
disk | Utilisation maximale du disque de courant pour démarrer le processus, exprimé en kb / s |
cpu | Utilisation maximale du processeur actuel pour démarrer le processus, exprimée en pourcentage de puissance combinée du processeur. |
network | Utilisation maximale du réseau actuel pour démarrer le processus, exprimé en KB / S |
ssid | Vérifiez si le nom du réseau WiFi correspond avant l'exécution. |
| Quand et à quelle fréquence | |
start | Exécutez cela à plusieurs reprises au démarrage. 0 = Infini |
skip | Sautez l'exécution de ce processus x fois au démarrage. |
max | Nombre maximum de fois pour exécuter un script. |
reps | Exécutez seulement tant de fois par jour ou par fenêtre de temps. |
delay | Retard avant de commencer le script |
suspend | Exécutez le script sur suspendre (s'il est tricot par script avec une option --idle) |
wake | Exécutez le script sur Wake après la suspension |
random | Le script s'exécutera au hasard Exemple: Random 8H fonctionnera (en moyenne) toutes les 8 heures. Certains jours, cela pourrait fonctionner plus de 5 fois, d'autres jours pas du tout. C'est ainsi que fonctionne le hasard. |
| Boucles | |
loop | Exécutez le script à plusieurs reprises lorsque le script se termine. Loop 0 = Loop pour toujours. Ne compte pas pour les répétitions. |
retry | Répris à plusieurs reprises en échec. Ne compte pas pour les répétitions. |
loopdelay | Retarder ceci longtemps après la boucle ou réessayer. Par défaut = 60 secondes si ce n'est pas défini. |
delaymult | Multipliez le retard après chaque boucle. Par défaut à 2 (doubler chaque boucle en mode de réessayer) |
| Environnement | |
nice | Démarrer le script avec Unix Nice Value. Des valeurs plus élevées sont plus belles pour d'autres processus |
nologs | Supprimer les journaux si le script renvoie le code 0 (tout va bien) |
noerrs | N'alerte pas sur les erreurs de script |
localdir | Exécutez un script à partir du même répertoire dans lequel il se trouve. |
timeout | Il est temps de permettre au script d'exécuter avant de le tuer. |
environs | Définissez les variables environnementales avant de commencer. Format: environs VAL1=TEXT $ VAL2=TEXT (variables séparées avec $) |
shell | Sets subprocess.run(shell=True)Permet d'accéder aux fonctionnalités avancées du shell en commande, mais est considérée comme un risque de sécurité. |
Rappel : Utilisez * pour les champs que vous n'avez pas besoin de remplir. Les 5 champs doivent contenir au moins 1 caractère.
xprintidle est nécessaire pour obtenir le nombre de secondes de l'ordinateur a été inactif.
Pour utiliser les utilitaires de surveillance du système pour les drapeaux cpu , network ou disk ; Veuillez installer psutil avec: python3 -m pip install psutil
Vous ne savez pas si votre horaire fonctionnera correctement? Exécutez le programme avec l'option - Testing ou tout simplement mettre un ## avant chaque chemin de script pour montrer ce qu'il ferait. Les journaux sont conservés dans / tmp / lazycron_logs
--idle (minutes) - Allez dormir après tant de minutes tout en branché. --idlebatt (minutes) - Allez dormir après tant de minutes en puissance de la batterie.
suspend à la liste Requirements afin de les exécuter avant de suspendre. - LC attendra 1 cycle après avoir exécuté un programme de suspension avant de endormir l'ordinateur. Si l'ordinateur montre l'activité au cours de cette période, le sommeil sera annulé. Mes scripts ne fonctionnent qu'une fois par jour!
0 dedans pas un *Xpridle n'a pas pu ouvrir Diplay
crontab ou d'un autre terminal non GUI, vous devez d'abord exporter l'affichage. Par exemple, exécutez export DISPLAY=:0ssh , assurez-vous de vous attacher à la session avec l'indicateur -x: ssh -X configure également le transfert X11 avec X11Forwarding yes dans /etc/ssh/sshd_config et redémarrez SSH.Comment obtenir des messages sur le bureau si un programme échoue?
Installez le module Pyqt6 Python de PIP (préféré): sudo pip install PyQt6
ou installer l'application tierce: zenity sudo apt install zenity
Que signifie la liste des nombres à chaque fois qu'un programme est démarré dans --verbose = 2 mode?
C'est une histoire de ruissellement. Au lieu d'enregistrer l'horodatage Unix, j'ai trouvé plus compact d'enregistrer les secondes du nombre depuis le début du journal.
Ajoutez ces numéros à l'horodatage au début du journal pour obtenir un horodatage UNIX exact du début de chaque programme.
Des idées qui pourraient être mises en œuvre à l'avenir. Déposer un rapport de bogue si avec la balise "proposition" si cette idée ou une autre idée vous intéresse:
Logique booléenne pour les exigences: idle 2m OR today 3h
AND .Prise en charge Mac / Windows
Nouveaux champs d'exigence, faites-moi savoir ce que vous voulez voir!