Size: a a a

Чат канала Бирмана

2020 July 11

MM

Max Musatov in Чат канала Бирмана
Хм, похоже, это документированное поведение nodemon. Думаю вот, как его обойти
источник

VP

Valera Popov in Чат канала Бирмана
Теория: после forever stop этот pid не «остается», а появляется новый потому что перезапускается
источник

VP

Valera Popov in Чат канала Бирмана
хотя... номер-то пида тот же самый что был вначале
источник

MM

Max Musatov in Чат канала Бирмана
Не, это он же, я проверил
источник

MM

Max Musatov in Чат канала Бирмана
Хак №1 не сработал, nodemon считает SIGSEGV (!!) нормальным завершением
источник

MM

Max Musatov in Чат канала Бирмана
Чудны дела твои, Господи
источник

VP

Valera Popov in Чат канала Бирмана
Max Musatov
Действительно, в этом случае он падает с ошибкой

[nodemon] clean exit - waiting for changes before restart
events.js:292
     throw er; // Unhandled 'error' event
     ^

Error: EBADF: bad file descriptor, read
Emitted 'error' event on ReadStream instance at:
   at internal/fs/streams.js:206:14
   at FSReqCallback.wrapper [as oncomplete] (fs.js:516:5) {
 errno: -9,
 code: 'EBADF',
 syscall: 'read'
}
ебаааааать! Так ошибка возникает именно когда руками из консоли запускаешь!

То есть когда через spawn делаю как раз правильное поведение, что nodemon остается!
источник

MM

Max Musatov in Чат канала Бирмана
Да, я об этом
источник

MM

Max Musatov in Чат канала Бирмана
Valera Popov
ебаааааать! Так ошибка возникает именно когда руками из консоли запускаешь!

То есть когда через spawn делаю как раз правильное поведение, что nodemon остается!
Но я нашёл решение
источник

MM

Max Musatov in Чат канала Бирмана
var spawn = child_process.spawn('bash', ['-c', `nohup forever --uid "${script_path}" /usr/bin/nodemon --exitcrash -I ${script_path} > ${logs_path} 2>&1 &`], {detached: true, stdio: ['inherit']})
источник

MM

Max Musatov in Чат канала Бирмана
Кажется, оно делает всё, что ты хотел
источник

MM

Max Musatov in Чат канала Бирмана
Предполагается, что nodemon в /usr/bin/nodemon, если не так, поправь на нужное
источник

VP

Valera Popov in Чат канала Бирмана
Max Musatov
var spawn = child_process.spawn('bash', ['-c', `nohup forever --uid "${script_path}" /usr/bin/nodemon --exitcrash -I ${script_path} > ${logs_path} 2>&1 &`], {detached: true, stdio: ['inherit']})
раньше я когда еще руками из консоли запускал, у меня было тоже наоборот: я запускал форевер, а к нему уже нодемон. Но там была проблема: при краше скрипта он не перезапускался форевером, а нодемон говорил: жду перезапуска скрипта чтобы перезапустить. Ща проверю
источник

MM

Max Musatov in Чат канала Бирмана
Valera Popov
раньше я когда еще руками из консоли запускал, у меня было тоже наоборот: я запускал форевер, а к нему уже нодемон. Но там была проблема: при краше скрипта он не перезапускался форевером, а нодемон говорил: жду перезапуска скрипта чтобы перезапустить. Ща проверю
Тут учтено
источник

VP

Valera Popov in Чат канала Бирмана
Max Musatov
var spawn = child_process.spawn('bash', ['-c', `nohup forever --uid "${script_path}" /usr/bin/nodemon --exitcrash -I ${script_path} > ${logs_path} 2>&1 &`], {detached: true, stdio: ['inherit']})
перезагружается само
источник

VP

Valera Popov in Чат канала Бирмана
я просто запустил и ничего не делал
источник

MM

Max Musatov in Чат канала Бирмана
Кажется, проблема с nodemon на конкретной системе. Ты на ней раньше его запускал?
источник

VP

Valera Popov in Чат канала Бирмана
да, всегда работало
источник

VP

Valera Popov in Чат канала Бирмана
источник

MM

Max Musatov in Чат канала Бирмана
Ладно, а так?
var spawn = child_process.spawn('bash', ['-c', `nohup forever --uid "${script_path}" /usr/bin/nodemon --exitcrash -L -I ${script_path} > ${logs_path} 2>&1 &`], {detached: true, stdio: ['inherit']})
источник