@i1yas

Как выполнять скрипты nodejs в crontab?

Пытался заставить выполняться скрипт на node с определенной переодичностью, но возникли проблемы.
Скрипт должен писать в логи. Логи - пустые. В итоге создал тестовый скрипт, который выглядит так:
console.log(Number(new Date()));
В crontab задача записана так
* * * * * /usr/bin/node /path/to/script/test.js >> /path/to/script/test.log

Вручную эта команда работает. Но крон почему-то не выполняет скрипт. При этом если файла нет, он создается.
Изначально я писал в файл не через stdout, а с помощью модуля fs, но картина была та же.
В /var/log/syslog запись о выполнении задачи есть.
Крон запущен, естественно.
Ubuntu 18.04.2
Что я делаю не так?
  • Вопрос задан
  • 1801 просмотр
Решения вопроса 1
@i1yas Автор вопроса
В общем я сразу не додумался stderr залогировать, а там
/bin/sh: 1: ilyas: not found
И мне не очень понятна природа этой ошибки, я вроде напрямую указываю путь к ноде.
В общем решение костыльное, нашел здесь: создать файл execute.sh. В нем использовать env:
#!/usr/bin/env sh
node /path/to/file/test.js >> /path/to/file/test.log

Затем добавил в крон
* * * * * /bin/bash /path/to/file/execute.sh
И все заработало
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vshvydky
я думаю проблема исключительно в том что не читалась документация по крону, что за * * * * * , где хоть 1 число, чтобы крон понял, что надо запускать скрипт то?
Что я делаю не так?

стековерфлоу прогрессисты зло, читай доки дружище!!!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы