web-dev-qa-db-ja.com

コンピューターの電源が入っていてインターネットに接続している場合、どうすればPythonスクリプトを1日1回実行できますか?

コンピューターの電源が入っていてインターネットに接続されている場合は、毎日Pythonスクリプトを実行したいのですが、どうすればよいですか?私の努力は

00 14 * * * python3 /home/jaakko/.config/spyder-py3/temp.py

しかし、問題は、自分のコンピューターがその時間にオンになっているかどうか、そしてインターネットにアクセスできるかどうかがわからないことです。

1
jaakko

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はルートとして実行されます。それが問題になる場合は、 AskUbuntuのこの回答 に示されている手順に従って、通常のユーザーとして実行できます。

2
Quasímodo

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

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

0
Emmanuel