【注意】プログラミングを初めて数カ月の初心者の備忘録です。
めちゃめちゃ時間がかかった かつ 英語でも日本語でも情報がすくなかったのでメモしておきます
<私の環境>
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
参考サイト
crontab はどのシェルコマンドで実行されるのか? – それマグで! (hatenablog.jp)
コメント