Open4

cronの時刻設定とdockerコマンドをたたきたい場合の注意

torohashtorohash

crontab -eで開く。

分 時 日 月 週の曜日 コマンド

8分、38分に実行みたいなケース

8,38 * * * * コマンド

10分毎とかなら*/10

*/10 * * * *
torohashtorohash

cronからdockerコマンドを実行する場合は、pathが通ってないためcrontab内でpathを通す

PATH=/usr/bin:/bin:/usr/sbin:/sbin

もしくはwhich dockerで場所が分かるので、その通り書く

usr/bin/docker compoase build

あと、cronジョブは基本そのジョブを設定したユーザーのホームディレクトリがpwdになるので、docker-compose.ymlを使う場合はそれのあるディレクトリに移動する

* * * * * cd ~/app && command
torohashtorohash

cronのエラーは基本的にMTAの機能でメールで届けられる、設定していないと以下のようなエラーがログに残る
※ログは/var/log/syslogより、MTA未設定でもsyslogにシステムレベルのログとしてジョブ実行開始や終了は残る

CRON[14467]: (CRON) info (No MTA installed, discarding output)

もしcronのログを別途保存したい場合は以下のようにする

* * * * * /path/to/command > /path/to/logfile.log 2>&1

ログファイルに上書きではなく追記する形にしたいなら以下

* * * * * /path/to/command >> /path/to/logfile.log 2>&1

標準出力のリダイレクト。2は標準エラー出力なのでそれもリダイレクトできる。
ちなみにリダイレクト先のファイルは勝手に作るけど、ディレクトリは勝手に作らないので事前にmkdirしておく必要あり

torohashtorohash

自分のコマンド実行例とか

8,18,28,38,48,58 * * * * cd ~/alert_fr_bot && sudo /usr/bin/docker compose -f docker-compose.prod.yml run get_funding_rate > ~/cron_log/cron.log 2>&1

funding_rate逐一確認するの面倒だったので作ったやつ。
AIに聞いたらcrontabでsudo使うなという話だったので、dockerをubuntuに入れるときにsudoじゃないと実行できなくなるやつどうすればいいか別途調べます。ということでsudo以外だけ見てもらえればと、、