Ответ 1
просто укажите полный путь к node /usr/local/bin/node
в вашем задании cron, например:
30 6 1 * * /usr/local/bin/node /home/steve/example/script.js
Проще говоря, у меня есть 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
У меня кончились идеи, чтобы попробовать, какие-нибудь советы?
просто укажите полный путь к node /usr/local/bin/node
в вашем задании cron, например:
30 6 1 * * /usr/local/bin/node /home/steve/example/script.js
Кроме того, просто поместите #!/usr/local/bin/node
в начало script, который вы хотите выполнить. Затем он автоматически узнает, что выполнить script с помощью node. Убедитесь, что файл также выполним.
Я не знаю, является ли изменение относительных путей в вашем script абсолютными путями - хорошая идея
(что происходит, когда ваша файловая система изменяется или развертывается в другой среде?)
Вы можете попробовать обернуть его в оболочку script, установив некоторые переменные среды в выполнении crontab. (в частности, PATH
и NODE_PATH
для стартеров)
Попробуйте мое предложение по этому аналогичному вопросу:
fooobar.com/questions/179439/...
в моем ноутбуке с использованием Linux mint данный путь не работает, поэтому я использовал это, чтобы получить работу.
$ which node
$ /usr/bin/node
это сработало для меня.
Используйте абсолютные пути для псевдонима 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