Сценарий Node.js не выполняется из crontab - PullRequest
1 голос
/ 25 августа 2011

У меня есть запись в crontab, которая должна выполнять скрипт node.js следующим образом:

*/5 * * * * node /home/campaigns/reporting/UNIT_TESTS/testCron.js > /home/campaigns/reporting/UNIT_TESTS/cron.log

Однако она не выполняется, а файл журнала необновлено.Когда я запускаю скрипт вручную, все работает, хотя.Есть идеи ??

Спасибо, Игорь

Ответы [ 4 ]

16 голосов
/ 17 января 2013

У меня тоже была эта проблема.Похоже, что после обновления системы на нашем сервере ссылка на двоичный файл узла ушла из PATH.Поэтому лучшим решением в этом случае всегда является использование не node script.js, а полный путь к двоичному файлу, который в нашем случае равен /usr/local/bin/node script.js.

8 голосов
/ 17 марта 2014

Я недавно столкнулся с этой же проблемой и смог решить ее с помощью следующего сообщения в блоге.

По сути, укажите полный путь к узлу и вашему файлу в задании cron:

/usr/local/bin/node /var/www/coffee.js

http://www.themechanism.com/voice/2012/08/28/getting-node-js-and-cron-to-play-nicely/

4 голосов
/ 25 августа 2011

Попробуйте создать скрипт с помощью команды:

script.sh:

#!/usr/bin/env sh
node /home/campaigns/reporting/UNIT_TESTS/testCron.js > /home/campaigns/reporting/UNIT_TESTS/cron.log

, а затем добавьте его в cron:

*/5 * * * * /path/to/script.sh

убедитесь, чтоисполняемый скрипт (chmod +x script.sh)

2 голосов
/ 15 июня 2018

Я использую nvm install node.js в Linux, и кажется, что crontab плохо знает путь, поэтому я написал полный путь к узлу для выполнения файла узла.

* * * * * /home/www/.nvm/versions/node/v8.11.1/bin/node /home/www/ss-config/index.js
...