Подтвердить что ты не робот

Как выполнить Node.js script с помощью задания cron?

Проще говоря, у меня есть node script, который я хочу выполнить один раз в месяц.

30 6 1 * * node /home/steve/example/script.js

Но это не работает, по-видимому, из-за пути или оболочки, в которой запускается команда. Я пробовал следующие средства выполнения node через cron (проверенный с -v):

[email protected]:~$ node -v
v0.4.2

[email protected]:~$ sh node -v
sh: Can't open node

[email protected]:~$ bash node -v
/usr/local/bin/node: /usr/local/bin/node: cannot execute binary file

[email protected]:~$ /usr/local/bin/node -v
v0.4.2

[email protected]:~$ sh /usr/local/bin/node -v
/usr/local/bin/node: 1: Syntax error: "(" unexpected

[email protected]:~$ bash /usr/local/bin/node -v
/usr/local/bin/node: /usr/local/bin/node: cannot execute binary file

У меня кончились идеи, чтобы попробовать, какие-нибудь советы?

4b9b3361

Ответ 1

просто укажите полный путь к node /usr/local/bin/node в вашем задании cron, например:

30 6 1 * * /usr/local/bin/node /home/steve/example/script.js

Ответ 2

Кроме того, просто поместите #!/usr/local/bin/node в начало script, который вы хотите выполнить. Затем он автоматически узнает, что выполнить script с помощью node. Убедитесь, что файл также выполним.

Ответ 3

Я не знаю, является ли изменение относительных путей в вашем script абсолютными путями - хорошая идея
(что происходит, когда ваша файловая система изменяется или развертывается в другой среде?)

Вы можете попробовать обернуть его в оболочку script, установив некоторые переменные среды в выполнении crontab. (в частности, PATH и NODE_PATH для стартеров)

Попробуйте мое предложение по этому аналогичному вопросу:
fooobar.com/questions/179439/...

Ответ 4

в моем ноутбуке с использованием Linux mint данный путь не работает, поэтому я использовал это, чтобы получить работу.

$ which node

$ /usr/bin/node это сработало для меня.

Ответ 5

Используйте абсолютные пути для псевдонима node и файла, который будет запущен.

Редактировать задания Cron

contab -e

Вход для запуска нашего node файла

Это будет выполняться каждую минуту.

*/1 * * * * * /bin/node /public/test.js

Полный учебник https://askmacgyver.com/blog/tutorial/how-to-run-node-scripts-from-a-cron-job