Как можно запускать скрипт Python один раз в день, если компьютер включен и подключен к Интернету?

Как можно запускать скрипт Python один раз в день, если компьютер включен и подключен к Интернету?

Я хотел бы запускать скрипт Python каждый день, если мой компьютер включен и подключен к Интернету. Как я могу это сделать? Мои усилия

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

Но проблема в том, что я не знаю, включен ли мой компьютер в это время и есть ли у него доступ к Интернету.

решение1

anacronВместо этого следует использовать cron. В /etc/cron.dailyсоздайте файл (я назову его script) со следующим содержимым:

#!/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

Сделайте его исполняемым, chmod +x scriptи все готово.

Он будет pingдомены и запустит python, если ответ будет получен в течение 4 секунд. Выберите домены, которые лучше всего соответствуют вашим потребностям. Те, что я привел, являются лишь примерами, но для общего доступа в Интернет их, вероятно, будет достаточно.

Если пакет не получен, повторная попытка будет предпринята через 60 секунд.


Принять к сведению: scriptБудет запущен как root. Если это проблема для вас, вы можете выполнить шаги, представленные вэтот ответ в AskUbuntuчтобы запустить его как обычный пользователь.

решение2

Вы также можете использовать простые приложения с графическим интерфейсом, такие каккалармиликчасы(доступно с рабочим столом KDE). Настройте его для вызова вашего скрипта по желаемому расписанию, я использую его, например, для ежедневного резервного копирования моих репозиториев. И для этого не требуется супер или root-доступ.

Редактировать: Это может предполагать, что пользователь вошел в систему и сохраняет свою сессию активной, но я не уверен в этом на 100%.

Связанный контент