やりたいこと
cronでnpm scriptを定期実行させたい
設定
$ crontab -e
* * * * * cd /path/dir/ && npm script
実行できない、なぜ?
ログを出して確認してみる。
cronの実行ユーザを確認する
crontab -e
cronの実行ユーザをログに書き出す
* * * * * whoami > /home/username/cron.log 2>&1
ログを確認する
$ cat /home/username/cron.log
PATHを確認する
cronで実行する際のPATHを確認する
* * * * * echo $PATH > /home/username/cron.log 2>&1
ログを確認する
$ cat /home/username/cron.log
該当するユーザで実行する際のPATHを確認する
$ echo $PATH
結論
自分の場合は、cronで実行する際のPATHとユーザで実行する際のPATHが異なっていたために、npm scriptが実行できなかった。
ので、cronで実行する際のPATHをユーザで実行する際のPATHに合わせてやったら、npm scriptが実行されるようになった。
$ crontab -e
PATH= #ここにPATHを設定してやればOK
* * * * * cd /path/dir/ && npm script