Como posso executar o script Python uma vez por dia se o computador estiver ligado e tiver conexão com a Internet?

Como posso executar o script Python uma vez por dia se o computador estiver ligado e tiver conexão com a Internet?

Eu gostaria de executar um script Python todos os dias se meu computador estiver ligado e conectado à Internet. Como eu posso fazer isso? Meu esforço é

00 14 * * * python3 /home/jaakko/.config/spyder-py3/temp.py

Mas o problema é que não sei se meu computador está ligado naquele horário e se tem acesso à Internet.

Responder1

Você deve usar anacronem vez de cron. Em /etc/cron.daily, crie um arquivo (vou chamá-lo de script) com este conteúdo:

#!/bin/sh
while true; do
    for host in www.ieee.com www.stackexchange.com; do
        if ping -w 4 $host; then
            python3 /home/jaakko/.config/spyder-py3/temp.py
            exit 0
        fi
    done
    sleep 60
done

Torne-o executável chmod +x scripte pronto.

Ele pingdominará e executará python se uma resposta for recebida em 4 segundos. Escolha os domínios que melhor atendem às suas necessidades. Os que forneço são apenas exemplos, mas para acesso geral à Internet provavelmente serão suficientes.

Se nenhum pacote for recebido, ele tentará novamente em 60 segundos.


Tome nota: O scriptserá executado como root. Se isso for um problema para você, siga as etapas apresentadas emesta resposta no AskUbuntupara executá-lo como seu usuário normal.

Responder2

Você também pode usar aplicativos GUI simples comoalarmeourelógio(disponível na área de trabalho KDE). Configure-o para chamar seu script na programação desejada. Estou usando-o para fazer backup diário de meus repositórios, por exemplo. E não requer nenhum acesso super ou root.

Editar: Isso pode assumir que o usuário está logado e mantém sua sessão ativa, não tenho 100% de certeza sobre isso.

informação relacionada