Как остановить работу узла js-сервера как службы - PullRequest
2 голосов
/ 29 июня 2019

Я написал маленький сервер в узле js, который я запускаю как службу при загрузке

Мой /etc/init.d/lightserver выглядит так:

# Actions
case "$1" in
    start)
        # START
        /usr/bin/lightserver
        ;;
    stop)
        # STOP
        ;;
    restart)
        # RESTART
        ;;
esac
exit 0

Я хочу иметь возможность правильно остановить сервер с помощью команды "/etc/init.d/lightserver stop". Без использования kill или killall.

Как реализовать эту функцию на моем сервере?

var i = 0;
var connect = require('connect'); 
var sleep = require('sleep');
var exec = require('child_process').exec;
var j = 1;

var server = connect().
use(function(req, res) {
    i++;
    res.write('Hello World! ' + i); 
    res.end();
    let code = 83028 + j; 
    j = 1 - j;
    exec("./433Utils/RPi_utils/codesend " + code, function(error, stdout, stderr) {
        console.log(stdout);
    });
}).listen(64084); 
console.log("Server has started and is listening to http://localhost:64084/");

1 Ответ

1 голос
/ 29 июня 2019

Я думаю, вы ищете что-то подобное?

process.on('SIGTERM', () => {
  // some other cleanup code
  server.close();
});

Это перехватывает команду kill и изящно закрывает сервер, а не просто внезапно останавливает процесс без предупреждения.

Чтобы завершить процесс корректно, вы можете просто использовать команду kill <PID>, так как SIGTERM является значением по умолчанию. Но если вы хотите быть уверенным, что используется sigterm, вы всегда можете выбрать kill -SIGTERM <PID>, который отправит SIGTERM

Сигналом по умолчанию для kill является TERM. Используйте -l или -L для просмотра списка доступных сигналы. Особенно полезные сигналы включают HUP, INT, KILL, STOP, CONT и 0. Альтернативные сигналы могут быть указаны тремя способами: -9 -SIGKILL -KILL. Отрицательные значения PID могут быть использованы для выбора целого группы процессов; см. столбец PGID в выводе команды ps. PID -1 особенный; это указывает на все процессы, кроме самого процесса уничтожения и init.

http://linuxcommand.org/lc3_man_pages/kill1.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...