Я пытаюсь настроить процесс crontab
в Ubuntu 18.04, чтобы периодически проверять состояние pm2
и перезапускать его при необходимости. Поскольку я более знаком с JavaScript, я решил, чтобы процесс crontab запустил файл узла, который получает данные JSON из pm2, чтобы проверить состояние каждого приложения в pm2. Если обнаружены какие-либо проблемы, файл JS выполнит другой сценарий bash
, используя shellJS
. Итак:
- Crontab
- Сценарий узла
- Если есть проблема с приложением pm2, выполните сценарий bash
- Удалить существующий pm2приложение и запустить его новый экземпляр
Однако, когда я делаю это из файла JS, я получаю следующую ошибку, происходящую из bcrypt:
Error: The module '/root/myProject/node_modules/bcrypt/lib/binding/bcrypt_lib.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 67. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
at Object.Module._extensions..node (module.js:681:18)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/root/myProject/node_modules/bcrypt/bcrypt.js:6:16)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/root/myProject/models/User.js:3:16)
at Module._compile (module.js:652:30)
Это очень странно,Если я запускаю сценарий bash из командной строки или запускаю команду непосредственно в командной строке, я не получаю сообщение об ошибке - только когда запускаю его из shellJS / node.
Вот строкавызовите его из узла:
shell.exec('/var/scripts/restart-pm2.sh')
Вот строка в файле restart-pm2.sh
:
pm2 start /root/ecosystem.config.js --only index
И снова запуститеточная команда работает нормально.
ОБНОВЛЕНИЕ:
Я попытался запустить скрипт bash непосредственно из cron, и я также получаю сообщение об ошибке. Так что, по-видимому, причиной ошибки является не shellJS / node, а что-то в контексте cron.