Usar Cron es bueno si tiene un servidor o nunca apaga su computadora, pero ¿qué pasa si su computadora portátil está dormida durante el minuto exacto que ha configurado para ejecutar su script? ¿Qué pasa si tienes que reiniciar? ¿Qué pasa si su computadora realmente se está ejecutando, pero prefiere esperar hasta que esté inactivo con la tapa cerrada antes de ejecutar un proceso de copia de seguridad u otro script intensivo?
Con LazyCron, "su computadora lo logrará eventualmente". LazyCron adopta un enfoque más caro de vida de la vida. Claro, hará el trabajo, pero no hay prisa. No establece un tiempo para ejecutar, establece un rango. Mejor aún, cada vez que los scripts ejecutan y encuentren un error, LC aparecerá un mensaje para hacerle saber que algo salió mal en lugar de simplemente fallar en silencio.
Edita su archivo de programación.txt con programas para ejecutar:
"El tiempo" es que la ventana es cuando el script puede ejecutarse. Puede tener varias ventanas de tiempo separadas con comas. Por ejemplo: 1-3am, 2pm-4pm, 11:30-11:34 -Juega con estos números; El sistema es muy flexible. Cuando ejecute mi guión, le mostrará la próxima ventana de tiempo disponible para cada programa para que pueda confirmar que está haciendo lo que esperaba.
Por ejemplo, supongamos que tiene un script de copia de seguridad que solo desea ejecutar cuando la computadora está en línea, pero no en uso. En schedule.txt a continuación establecí el rango de tiempo entre las 8:30 p.m. y las 3 a.m. La frecuencia se establece en * lo que significa que solo se ejecutará una vez durante ese período de tiempo. La fecha se establece en sat-sun lo que significa que solo se ejecutará los sábados y domingos. El campo de requisitos dice que la computadora debe estar inactiva durante al menos 5 minutos, conectado y en línea. De lo contrario, el script esperará hasta que se cumplan esas condiciones.
También puede establecer varios requisitos, como: la computadora debe estar inactiva durante una cierta cantidad de tiempo, ocupado, enchufado, en línea, la tapa debe estar cerrada y más. Consulte las opciones completas a continuación en la sección [requisitos] (# requisitos).
#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
Ventana Cuando el script puede ejecutarse.
- `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.
Con qué frecuencia se ejecuta el programa. M = minutos, H = horas y así sucesivamente. Mi guión debería permitir la mayoría de las entradas del lenguaje natural aquí.
- 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.
Por lo general, se establece como un rango para limitarlo para que se ejecute en ciertos días de la semana: Ejemplos: MF, cada segundo jueves
- `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.
Una lista separada por comas de requisitos adicionales necesarios para que se ejecute el script. Al igual que con el tiempo, la frecuencia y la fecha, se permiten la mayoría de las entradas del lenguaje natural. Los disponibles son los siguientes:
| Requisitos de tiempo | |
idle | Tiempo para la que la computadora ha estado inactiva. |
busy | Tiempo que la computadora ha estado continuamente ocupada para |
elapsed | Se debe usar la computadora de tiempo total para. |
today | Tiempo total hoy en día la computadora debe usarse. |
| Requisitos de estado informático | |
online | ¿Tenemos acceso a Internet? |
closed/open | La tapa debe estar cerrada. |
(un)plugged | El cable de alimentación debe estar unido. |
lowbatt | Ejecute si el porcentaje de batería cae por debajo de un cierto porcentaje. |
minbatt | Ejecute si el porcentaje de batería está por encima de un cierto porcentaje. |
disk | El uso máximo de disco de corriente para iniciar el proceso, expresado en KB/S |
cpu | Uso máximo de CPU actual para iniciar el proceso, expresado como un porcentaje de la potencia combinada de la CPU. |
network | El uso máximo de la red actual para iniciar el proceso, expresado como KB/S |
ssid | Verifique si el nombre de red WiFi coincide antes de ejecutarse. |
| Cuando y con qué frecuencia | |
start | Solo ejecuta esto muchas veces en el inicio. 0 = Infinito |
skip | Saltar ejecutando este proceso x veces al inicio. |
max | Número máximo de veces para ejecutar un script. |
reps | Solo corre tantas veces al día o por ventana de tiempo. |
delay | Retraso antes de comenzar el script |
suspend | Ejecute el script en suspender (si está trigado por script con una opción --idle) |
wake | Ejecutar el guión en WAKS después de suspender |
random | El guión se ejecutará al azar Ejemplo: 8H aleatorio (en promedio) se ejecutará cada 8 horas. Algunos días podría funcionar más de 5 veces, otros días en absoluto. Así es como funciona la aleatoriedad. |
| Bucles | |
loop | Ejecute el script muchas veces cuando termina el script. bucle 0 = bucle para siempre. No cuenta para los representantes. |
retry | Vuelva a intentar esto muchas veces por el fracaso. No cuenta para los representantes. |
loopdelay | Retrasar este bucle largo o reintento. Predeterminado = 60 segundos si no está configurado. |
delaymult | Multiplique el retraso después de cada bucle. Predeterminado a 2 (retraso doble cada bucle en modo de reintento) |
| Ambiente | |
nice | Inicie el script con unix buen valor. Los valores más altos son más agradables para otros procesos |
nologs | Eliminar registros si el script devuelve el código 0 (todo está bien) |
noerrs | No alerta sobre ningún error de script |
localdir | Ejecute un script desde el mismo directorio en el que se encuentra. |
timeout | Es hora de permitir que el guión se ejecute antes de matarlo. |
environs | Establezca variables ambientales antes de comenzar. Formato: environs VAL1=TEXT $ VAL2=TEXT (variables separadas con $) |
shell | Establece subprocess.run(shell=True)Permite el acceso a las características avanzadas de shell en el comando, pero se considera un riesgo de seguridad. |
Recordatorio : Use * para campos que no necesita completar. Los 5 campos deben contener al menos 1 carácter.
Se requiere xprintidle para obtener el número de segundos que la computadora ha estado inactivo.
Para utilizar las utilidades de monitoreo del sistema para la cpu , network o los indicadores disk ; Instale psutil con: python3 -m pip install psutil
¿No estoy seguro de si su horario funcionará correctamente? Ejecute el programa con la opción de prueba o simplemente coloque un ## antes de cada ruta de script para mostrar lo que haría. Los registros se mantienen en /tmp /lazycron_logs
--idlebatt (minutes) --idle (minutes) -Vaya a dormir después de tantos minutos mientras está conectado.
suspend a la lista Requirements para ejecutarlos antes de suspenderlos. - LC esperará 1 ciclo después de ejecutar un programa de suspensión antes de dormir la computadora. Si la computadora muestra actividad en este período, el sueño se cancelará. ¡Mis guiones solo se ejecutan una vez al día!
0 no un *Xprintidle no pudo abrir Diflay
crontab u otra terminal no GUI, primero debe exportar la pantalla. Por ejemplo, ejecutar export DISPLAY=:0ssh , asegúrese de adjuntar a la sesión con el indicador -x: ssh -X también Configure el reenvío X11 con X11Forwarding yes in /etc/ssh/sshd_config y reinicie ssh.¿Cómo recibo mensajes en el escritorio si falla un programa?
Instale el módulo Pyqt6 Python de PIP (preferido): sudo pip install PyQt6
o instalar la aplicación de terceros: zenity sudo apt install zenity
¿Qué significa la lista de números cada vez que se inicia un programa en --verbose = 2 mode?
Es una historia de tiempos de ejecución. En lugar de grabar la marca de tiempo UNIX, me pareció más compacto grabar los segundos de número desde que comenzó el registro.
Agregue estos números a la marca de tiempo al comienzo del registro para obtener una marca de tiempo UNIX exacta de cuando se inició cada programa.
Ideas que podrían implementarse en el futuro. Presente un informe de error si con la "propuesta" de la etiqueta si esta u otra idea le interesa:
Lógica booleana para requisitos: idle 2m OR today 3h
AND .Soporte de Mac / Windows
Nuevos campos de requisitos, ¡hágame saber lo que quiere ver!