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

Как упомянул @stoney в своем ответе, часть «полночь UTC» должна быть во входных данных.

Я вижу, что вы используете дату BSD, так что вы, вероятно, используете macOS.

date -j -u -f "%m-%d-%YT%T" "01-20-2013T00:00:00" "+%s"

Опция -uинтерпретирует дату как UTC, а часть %Tв строке формата позволяет команде также считывать время, здесь явно установленное на полночь.

1
02.04.2020, 03:32
2 ответа

Вы должны использовать 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
19.03.2021, 02:30

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

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

0
19.03.2021, 02:30

Теги

Похожие вопросы