#node.js #process #forever #sigint #sigkill
Вопрос:
Я запускаю программу nodejs на запущенном сервере Ubuntu 14.04.4 LTS (GNU/Linux 3.13.0-74-generic x86_64)
, используя версию forever v0.15.2
.
В моей программе (IoT1.js), мне нужно определить, когда он будет убит (для другого запуска), чтобы я мог записать последние состояния подключенных клиентов. Упрощенная версия моей программы:
const WebsocketServer = require("websocket").server
... // websocket listener
const jsonfile = require("jsonfile")
...
process.on('SIGINT', () => { // also tried SIGKILL, not working either
console.log("KILL fired")
jsonfile.writeFileSync("./someLastState.json", states)
// process.exit(-1)
})
Затем из ssh
терминала я попробовал эти комбинации:
forever start -p ./ -l lIoT1.log -e eIoT1.log -c node IoT1.js
forever stop <pid>
forever start -p ./ -l lIoT1.log -e eIoT1.log -c node IoT1.js
forever stop <pid> --killSignal=SIGINT // or SIGKILL
forever start -p ./ -l lIoT1.log -e eIoT1.log -c node IoT1.js --killSignal=SIGINT
forever stop <pid>
forever start -p ./ -l lIoT1.log -e eIoT1.log -c node IoT1.js --killSignal=SIGINT
forever stop <pid> --killSignal=SIGINT
но ничего не работает! т. е. «KILL fired» не печатается (я tail -f lIoT1.log
постоянно читал его вывод) и someLastStates.json
не создается.
Что я должен сделать, чтобы поймать этот сигнал об УБИЙСТВЕ, чтобы у моего nodejs был последний шанс записать какой-то файл перед тем, как его действительно убьют?
С уважением