saneatsu
10/29/2019 - 9:01 AM

Macでcrontabを使う

基本

作成

$ crontab -e

*/1 * * * * /bin/bash /Users/saneatsuwakana/Code/AlgoAge/05_ChatbotProject/chatbot_webapp/sns_manager/app/health_check.sh

1分毎にシェルを叩く

登録

$ crontab crontab
$ crontab -l # 確認されているかチェック

結果の確認

Macでは以下のパスでエラーや出力ログは見れる

$ tail /var/mail/saneatsuwakana

参考

https://gitlab.com/double-y/chatbot_webapp/tree/master/question_cron

その他

curlの結果の使い方、if文の使用

crontabは以下のように1分ごとにシェルを実行するように

*/1 * * * * /bin/bash /Users/saneatsuwakana/Code/AlgoAge/05_ChatbotProject/chatbot_webapp/sns_manager/app/health_check.sh

シェルはcurlの結果がない場合はdockerを再起動する

#!/bin/sh

result=$(curl -X GET http://localhost:5000/api/health)

if [[ $result == *"ok"* ]]; then
    echo "good"
else
    echo "bad"
    eval "sudo docker-compose down && sudo docker-compose up -d sns_manager_https_portal"
fi

https://teratail.com/questions/69523

Dockerで使う場合

# For cron
RUN apt-get update
RUN apt-get install -y cron
RUN apt-get install vim

🚨 crontab: No such file or directory

cronで実行するファイルの中にバグがある可能性があるので
*/1 * * * * /bin/bash /code/app/health_check.sh
とかを実行したいなら先に
/bin/bash /code/app/health_check.sh でエラーがでないことを確認する。

今回の場合は実際にエラーが発生した。