Как упомянул @stoney в своем ответе, часть «полночь UTC» должна быть во входных данных.
Я вижу, что вы используете дату BSD, так что вы, вероятно, используете macOS.
date -j -u -f "%m-%d-%YT%T" "01-20-2013T00:00:00" "+%s"
Опция -u
интерпретирует дату как UTC, а часть %T
в строке формата позволяет команде также считывать время, здесь явно установленное на полночь.
Вы должны использовать 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 , чтобы запустить его как обычный пользователь.
Вы также можете использовать простые приложения с графическим интерфейсом, такие как kalarm или kclock (, доступные с рабочим столом KDE ). Настройте его для вызова вашего скрипта по желаемому расписанию, например, я использую его для ежедневного резервного копирования своих репозиториев. И это не требует супер-доступа или root-доступа.
Изменить :Это может предполагать, что пользователь вошел в систему и сохраняет свою сессию активной, я не уверен на 100% в этом.