cronせっかく勉強したのに、Macだとlaunchd使いましょうとかいわれてなんやそれってなってます。
フルディスクアクセスにターミナル.appと、crontabを追加する。
1,フルディスクアクセスにcrontabを追加
「システム環境設定」→「セキュリティとプライバシ」→「フルディスクアクセス」で鍵を解除 →「+」→「command + shift + G」で /usr/bin/cron/ を入力して開く → crontabを選択して開く
2,フルディスクアクセスにターミナル.appを追加
1と同じように、アプリケーション/ユーティリティ/を開く → ターミナル.appを選択して追加
ここまで行えば、cronを実行できるようになる
crontabにcron文を記述する
cronの操作
crontab -e でvimなどで開ける
crontab -l で記入したcron文一覧を見れる
cron文
毎日10時10分にnode ~といったnode.jsファイルを自動実行したい場合
10 10 *** /Users/~/.nodebrew/current/bin/node /Users/~/programming/Nodejs/sample.js>>error.txt
#分 時 日 月 曜日 nodeコマンドのフルパス 実行したいjsファイルのフルパス
・nodeコマンドのフルパスはwhich node
とterminalに入力するだけ
・>>error.txtとすると、jsならconsole.log()での出力内容を取得したtextファイルを作成できる。
これで指定した時間に指定したファイルを実行できる
cronを実際に動かしてみてハマったときに確認したこと。
・cronに設定したPATHは合っているか
・logは出力できているか
・logはどこまで出力されているか→原因の場所特定
→結果 .envファイルを読み込むdotenvモジュールのファイルパスが相対パスになっていたことが問題だった。
require('dotenv').config()//動かなかったコードrequire('dotenv').config({path:'/Users/~/JS/Nodejs/scraping/.env'})
cronを止める
cronを一時的に止めたい場合は、#でコメントアウトすればいい