MENU

CRONでPythonファイルをランダムに実行する

【注意】プログラミングを初めて数カ月の初心者の備忘録です。

めちゃめちゃ時間がかかった かつ 英語でも日本語でも情報がすくなかったのでメモしておきます

<私の環境>
HP Chromebook x2 Core i5
Linux Debian 10.9

何のためにとは言いませんが、CRONでランダムにPythonプログラムを実行したかった。

参考にしたのはこのサイト

でも、その通りに入力したら、うんともすんともいわなくなっちゃったんですよね。

1つだけ、間違い?を発見したので直しました。

直したのは%の前に/を置いてエスケープさせただけなんですが、
それでもぜんぜん動かなくてはまっていました。

30 * * * * [ $(($RANDOM \% 3)) -eq 2 ] && /usr/bin/python3 Jikkou.py 

このプログラムは1/3の確率で毎時30分にプログラムが実行される

で、CRONのシェルをbashに変更したら解決しました。
CRONのシェルは初期でshなんですね。(自分で何を言っているかいまいちわかっていません)

これでなんとなくわかりました↓

シェル (shell)とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典 (i-3-i.info)

とりあえず、このコードをCrontabの上のほうに書いたら、さっきのコードが無事動き出しました。

SHELL=/bin/bash

めでたし、めでたし。

ちなみに

これならbashに変えなくても動いた

指定した時間+0-59秒待ってから起動する(あってるよね・・?)
でもsleepってことは、その間何もできないってこと?この場合は秒だからいいけど、何十分もスリープはだめかなぁとおもって上の方法を採用することにします。ちなみにat を使ってランダムに実行することもできそう

sleep $((RANDOM \% 60)) && /usr/bin/python3 Jikkou.py 

参考サイト

cronをランダムに実行する設定 – Qiita

crontab はどのシェルコマンドで実行されるのか? – それマグで! (hatenablog.jp)

/bin/shと/bin/bashの違い(とcronでのシェル) (rcmdnk.com)

cronで利用すると便利な、祝日や平日(営業日)かの判定方法 | パソコン鳥のブログ (sarakura.net)

よかったらシェアしてね!

コメント

コメントする

CAPTCHA


目次
閉じる