LoginSignup
0
0

More than 3 years have passed since last update.

【Macでcronを使ってNode.jsプログラムを定期実行させるまで】

Last updated at Posted at 2021-03-01

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を一時的に止めたい場合は、#でコメントアウトすればいい

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0