Open4
cronの時刻設定とdockerコマンドをたたきたい場合の注意
crontab -e
で開く。
分 時 日 月 週の曜日 コマンド
8分、38分に実行みたいなケース
8,38 * * * * コマンド
10分毎とかなら*/10
*/10 * * * *
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
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
しておく必要あり
自分のコマンド実行例とか
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以外だけ見てもらえればと、、