コンピュータがオンになっていてインターネットに接続されている場合、Python スクリプトを 1 日に 1 回実行するにはどうすればよいですか?

コンピュータがオンになっていてインターネットに接続されている場合、Python スクリプトを 1 日に 1 回実行するにはどうすればよいですか?

コンピュータの電源が入っていてインターネットに接続されている場合、毎日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完了です。

4 秒以内に応答が受信された場合、ドメインを作成して Python を実行しますping。ニーズに最も適したドメインを選択してください。私が提供しているドメインは単なる例ですが、一般的なインターネット アクセスにはおそらくこれで十分でしょう。

パケットが受信されない場合は、60 秒後に再試行します。


メモを取る: はscriptrootとして実行されます。それが問題になる場合は、AskUbuntuのこの回答通常のユーザーとして実行します。

答え2

次のようなシンプルなGUIアプリも使用できます。アラームまたはクロック(KDE デスクトップで利用可能)。希望のスケジュールでスクリプトを呼び出すように設定します。私は、たとえばリポジトリを毎日バックアップするためにこれを使用しています。また、スーパーまたはルート アクセスは必要ありません。

編集: これは、ユーザーがログインしていてセッションをアクティブに維持していることを前提としている可能性がありますが、それについては 100% 確信がありません。

関連情報