Usar Cron é bom se você tiver um servidor ou nunca desligar seu computador, mas e se o seu laptop estiver dormindo durante o minuto exato em que você definiu para executar seu script? E se você tiver que reiniciar? E se o seu computador estiver realmente em execução, mas você preferir esperar até que fique ocioso com a tampa fechada antes de executar um processo de backup ou outro script intensivo?
Com o Lazycron, "seu computador chegará a ele eventualmente". Lazycron adota uma abordagem mais sem fatura da vida. Claro, fará o trabalho, mas não há pressa. Você não define um tempo para executar, você define um intervalo. Melhor ainda, sempre que os scripts executam e encontram um erro, a LC exibe uma mensagem para que você saiba que algo deu errado, em vez de apenas falhar silenciosamente.
Você edita seu arquivo Schedule.txt com programas para executar:
"Time" é a janela é quando o script é autorizado a ser executado. Você pode ter várias janelas de tempo separadas com vírgulas. Por exemplo: 1-3am, 2pm-4pm, 11:30-11:34 -Brinque com esses números; O sistema é muito flexível. Quando você executa meu script, ele mostrará a janela da próxima vez disponível para cada programa, para que você possa confirmar que está fazendo o que esperava.
Por exemplo, digamos que você tenha um script de backup que você só deseja executar quando o computador estiver online, mas não em uso. No schedule.txt abaixo, defina o intervalo de tempo para as 20h30 e as 3h. A frequência é definida como * o que significa que só será executado uma vez durante esse período. A data está definida como sat-sun o que significa que só será executado aos sábados e domingos. O campo de requisitos diz que o computador deve ficar ocioso por pelo menos 5 minutos, conectado e online. Caso contrário, o script esperará até que essas condições sejam atendidas.
Você também pode definir vários requisitos, como: o computador deve estar ocioso por um certo período de tempo, ocupado, conectado on -line, a tampa deve estar fechada e muito mais. Consulte as opções completas abaixo na seção [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
Janela quando o script é autorizado a ser executado.
- `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.
Com que frequência o programa é executado. m = minutos, h = horas e assim por diante. Meu script deve permitir a maioria dos insumos de linguagem natural aqui.
- 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.
Geralmente definido como um intervalo para limitá -lo a ser executado em determinados dias da semana: Exemplos: MF, a cada 2ª quinta -feira
- `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.
Uma lista separada por vírgula de requisitos adicionais necessários para que o script seja executado. Assim como o tempo, a frequência e a data, a maioria dos insumos de linguagem natural são permitidos. Os disponíveis são os seguintes:
| Requisitos de tempo | |
idle | Tempo em que o computador está ocioso. |
busy | Tempo em que o computador está continuamente ocupado para |
elapsed | O computador total deve ser usado para. |
today | TEMPO TOTAL DE hoje em que o computador deve ser usado. |
| Requisitos de estado do computador | |
online | Temos acesso à Internet? |
closed/open | A tampa deve estar fechada. |
(un)plugged | O cabo de alimentação deve ser anexado. |
lowbatt | Corra se a porcentagem da bateria cair abaixo de uma certa porcentagem. |
minbatt | Execute se a porcentagem da bateria estiver acima de uma certa porcentagem. |
disk | Uso máximo de disco atual para iniciar o processo, expresso em KB/s |
cpu | Uso máximo de CPU atual para iniciar o processo, expresso como uma porcentagem de energia combinada da CPU. |
network | Uso máximo de rede atual para iniciar o processo, expresso como KB/s |
ssid | Verifique se o nome da rede Wi -Fi corresponde antes de ser executado. |
| Quando e com que frequência | |
start | Apenas execute isso muitas vezes na inicialização. 0 = Infinito |
skip | Pule a execução deste processo x vezes na inicialização. |
max | Número máximo de vezes para executar um script. |
reps | Apenas execute tantas vezes por dia ou por janela de tempo. |
delay | Atraso antes de iniciar o script |
suspend | Execute o script em suspensão (se acionado por script com uma opção --idle) |
wake | Execute o script em despertar após suspender |
random | Script vai funcionar aleatoriamente Exemplo: o 8H aleatório (em média) será executado a cada 8 horas. Alguns dias pode durar mais de 5 vezes, outros dias não. É assim que a aleatoriedade funciona. |
| Loops | |
loop | Execute o script tantas vezes quando o script termina. loop 0 = loop para sempre. Não conta para representantes. |
retry | Represente tantas vezes no fracasso. Não conta para representantes. |
loopdelay | Atrasar tanto tempo depois do loop ou tentar novamente. Padrão = 60 segundos, se não estiver definido. |
delaymult | Multiplique o atraso após cada loop. Padrão para 2 (atraso duplo todos os loops no modo de repetição) |
| Ambiente | |
nice | Inicie o script com um bom valor do Unix. Valores mais altos são mais agradáveis para outros processos |
nologs | Exclua logs se o script retornará o código 0 (tudo bem) |
noerrs | Não alerte sobre nenhum erro de script |
localdir | Execute um script do mesmo diretório em que ele está. |
timeout | Hora de permitir que o roteiro corra antes de matá -lo. |
environs | Defina variáveis ambientais antes de começar. Formato: environs VAL1=TEXT $ VAL2=TEXT (variáveis separadas com $) |
shell | Define subprocess.run(shell=True)Permite o acesso a recursos avançados do shell no comando, mas é considerado um risco de segurança. |
Lembrete : Use * para campos que você não precisa preencher. Todos os 5 campos devem conter pelo menos 1 caractere.
xprintidle é necessário para obter o número de segundos, o computador está ocioso.
Para usar os utilitários de monitoramento do sistema para as sinalizadores cpu , network ou disk ; Instale psutil com: python3 -m pip install psutil
Não tem certeza se sua programação funcionará corretamente? Execute o programa com a opção -Testing ou apenas coloque um ## antes de cada caminho de script para mostrar o que faria. Os logs são mantidos em /tmp /lazycron_logs
--idle (minutes) -Vá dormir depois de tantos minutos enquanto conectado. --idlebatt (minutes) -Vá dormir depois de tantos minutos com energia da bateria.
suspend à lista de Requirements para executá -los antes da suspensão. - A LC aguardará 1 ciclo depois de executar um programa de suspensão antes de colocar o computador para dormir. Se o computador mostrar atividade nesse período, o sono será cancelado. Meus scripts só correm uma vez por dia!
0 não A *Xprintidle não conseguiu abrir diplay
crontab ou outro terminal não GUI, você deve exportar o display primeiro. Por exemplo, execute export DISPLAY=:0ssh verifique se a sessão com o sinalizador -x: ssh -X também configure o encaminhamento x11 com X11Forwarding yes em /etc/ssh/sshd_config e reinicie o ssh.Como faço para obter mensagens na área de trabalho se um programa falhar?
Instale o módulo Pyqt6 Python a partir do PIP (preferido): sudo pip install PyQt6
ou instale o aplicativo de terceiros: zenity sudo apt install zenity
O que significa a lista de números toda vez que um programa é iniciado no --verbose = 2 mode?
É uma história de Run Times. Em vez de gravar o registro de data e hora do UNIX, achei mais compacto gravar o número segundos desde o início do log.
Adicione esses números ao registro de data e hora no início do log para obter um carimbo de data / hora do UNIX exato de quando cada programa começou.
Idéias que poderiam ser implementadas no futuro. Arquive um relatório de bug se com a tag "proposta" se esta ou outra ideia lhe interessar:
Lógica booleana para requisitos: idle 2m OR today 3h
AND .Mac / Windows Suporte
Novos campos de requisitos, deixe -me saber o que você quer ver!