Pythonスクリプトを実行する必要があるUbuntu Serverマシンがあります。
インターネットで検索したところ、Sudo crontab -e
cron設定を編集して、次のような行を追加します。
30 * * * * python3 /myScriptPath/myScriptName.py
私が見つけられなかったのは、スクリプトを実行する必要があることをcronに伝える方法ですブート時、その後30分ごとおよび"hh:30"時間ごとではありません。
また、スクリプトはどこに保存すればよいですか?
制御ファイルを作成して/etc/cron.d/myscriptrun
に配置します
Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot root /usr/local/bin/myscript.sh
このファイルを実行可能にしないでください。スクリプトではなく制御ファイルです。
Bashスクリプトを作成し、/usr/local/bin/myscript.sh
に配置します
#!/bin/bash
while true ; do
python3 /myScriptPath/myScriptName.py &
sleep 30m
done
実行可能ファイルchmod a+x /etc/cron.d/bashscript
にします。
&
はジョブをバックグラウンドで開始するため、スクリプトは正確に30分間スリープします。 &
を削除すると、ジョブが終了してから30分後にスクリプトがスリープ状態になります。意味のあるジョブは30分間隔で開始されなくなりました。
スクリプトを起動する必要はありません。cronは起動時に自動的に起動します。ステータスの使用を監視するには:
$ systemctl status cron*
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-11-12 06:01:27 MST; 1 weeks 6 days ago
Docs: man:cron(8)
Main PID: 1115 (cron)
CGroup: /system.slice/cron.service
├─1115 /usr/sbin/cron -f
├─1132 /usr/sbin/CRON -f
├─1138 /bin/sh -c /usr/local/bin/eyesome.sh
├─1142 /bin/bash /usr/local/bin/eyesome.sh
├─1160 /bin/bash /usr/local/bin/eyesome-dbus.sh
├─1168 dbus-monitor --system type=method_call, interface=org.freedesktop.ColorManag
├─1169 /bin/bash /usr/local/bin/eyesome-dbus.sh
└─6575 sleep 57207
ディスプレイの上部にcron
があり、下部にsleep
がありますが、中央にeyesome
がありません。ただし、その日の出/日没のマルチモニターの明るさ/ガンマ遷移ソフトウェア。
pythonジョブが次の30分間隔で実行されるタイミングを確認するには、sleep
コマンドのプロセスID(上記の例では6575
)で問い合わせを実行します):
$ remaining_sleep_time 6575
55923
$ echo $((55923/60))
932
残り時間は、ジョブがウェイクアップする前の55923秒を60秒で割った値= 932分です。 remaining_sleep_time
関数のコピーを取得するには、以下を参照してください。