javascript: reinicia con la API de PM2, reinicia también el script cuando se ejecuta en PM2

CorePress2024-01-24  10

Quiero crear un script en Javascript que controle PM2 a través de la API de PM2 y que también se ejecute en PM2.

pm2.js

var pm2 = require('pm2');

setTimeout(() => {
  restartProcess('client');
}, 2000); //After 2 seconds restart the 'client' process

function restartProcess(name) {

  pm2.connect(function(err) {
    if (err) {
      console.error(err);
      process.exit(2);
    }
    console.log ("restarting ",name)
    pm2.restart(name);

  pm2.disconnect;  
  })
  
}

Cuando ejecuto pm2.js solo en la terminal, esto funciona bien. Pero cuando ejecuto pm2.js dentro de PM2, el script sigue repitiéndose. Verifiqué el tiempo de actividad de los procesos, parece que no solo el cliente se reinicia sino que también se reinicia pm2.js, y después de 2 segundos, una y otra y otra vez...

Si estoy mirando los registros de pm2, veo en la salida estándar la tabla de lista de pm2. Lo cual no veo si ejecuto pm2.js desde la terminal.

No entiendo por qué sucede esto. ¿Existe alguna solución alternativa para solucionarlo?



------------------------------------

¿Por qué querrías hacer eso?

PM2 es un administrador de procesos demonio que lo ayudará a administrar y mantener su solicitud en línea las 24 horas del día, los 7 días de la semana

Consulte primero el documento oficial. PM2 fue diseñado para gestionar tareas de larga duración, algo así como un servidor web. Si el servidor web falla o se cierra por algún motivo, pm2 interferirá y lo reactivará nuevamente. Ese es el comportamiento predeterminado.

Su pm2.js simplemente se ejecuta en un corto tiempo (2 segundos) y luego sale. Entonces, si lo inicias con PM2, se iniciará una y otra vez...

No hay ninguna razón para ejecutar ese script dentro de PM2. Si aún lo desea, ejecútelo con el indicador --no-autorestart.

2

El tiempo de espera de 2 segundos es solo para fines de prueba, uso socket.io para conectarme a pm2.js. En otras palabras: quiero crear una GUI de página web donde pueda controlar mis procesos PM2, como iniciar, detener y reiniciar.

- raspiboele

27/03/2021 a las 23:50

Entonces simplemente hazlo, crea una tarea de larga duración y activa pm2.restart() solo cuando obtengas eventos de tu página web. No un guión como ese.

– HaiTH

28 de marzo de 2021 a las 3:33



------------------------------------

Puedes enviar SIGKILL a tu servicio, luego PM2 lo iniciará nuevamente.

pm2.connect((err) => {
    pm2.sendSignalToProcessName('SIGKILL', name, (e, p) => {
        pm2.disconnect();
    });
});

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare