Я хотел бы запускать скрипт 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%.