如果计算机已打开并且已连接到 Internet,我如何每天运行一次 Python 脚本?

如果计算机已打开并且已连接到 Internet,我如何每天运行一次 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如果 4 秒内收到响应,它将域并运行 python。选择最适合您需求的域。我提供的只是示例,但对于一般的互联网访问来说它们可能就足够了。

如果没有收到数据包,它将在 60 秒后重试。


做记录script将以 root 身份运行。如果这对您来说是个问题,您可以按照中提供的步骤进行操作AskUbuntu 中的这个答案以普通用户身份运行它。

答案2

您还可以使用简单的 GUI 应用程序,例如卡拉姆或者时钟(适用于 KDE 桌面)。将其设置为按所需的时间表调用您的脚本,例如,我使用它来每日备份我的存储库。而且它不需要任何超级或根访问权限。

编辑:这可能假设用户已登录并保持其会话处于活动状态,我对此并不 100% 确定。

相关内容