En Python Twisted, tienes el twistdcomando que te ayuda con una serie de cosas relacionadas con la ejecución de tu aplicación (demonizarla, por ejemplo).
¿Cómo demonizar un servidor node.js para que pueda ejecutarse incluso después de que se cierre la sesión actual?
Gracias por tu ayuda

Respuestas:
Siempre es la respuesta a tu pregunta.
Instalar en pc
$ curl https://npmjs.org/install.sh | sh $ npm install forever # Or to install as a terminal command everywhere: $ npm install -g foreverUso
Usando Forever desde la línea de comando
Usando una instancia de Forever de Node.js
var forever = require('forever'); var child = new forever.Forever('your-filename.js', { max: 3, silent: true, args: [] }); child.on('exit', this.callback); child.start();fuente
forever start server.jsa un script de inicio (por ejemplorc.local), si desea que sobreviva a los reinicios.Si necesita que su proceso se demonice a sí mismo, sin depender para siempre, puede usar el módulo demonize .
Luego simplemente escriba su archivo de servidor como en el ejemplo:
var daemon = require("daemonize2").setup({ main: "app.js", name: "sampleapp", pidfile: "sampleapp.pid" }); switch (process.argv[2]) { case "start": daemon.start(); break; case "stop": daemon.stop(); break; default: console.log("Usage: [start|stop]"); }Eso sí, es un enfoque de bajo nivel.
fuente
case 'restart': daemon.on('stopped', () => { daemon.start(); }); daemon.stop(); break;Para iniciar un
systemddemonio de administrador de servicios, escriba un archivo de servicio. Por ejemplo, cree un archivo/etc/systemd/system/myservice.service.[Unit] Description=myservice-description After=network.target [Service] ExecStart=/opt/myservice-location/src/node/server.js --args=here Restart=always User=me Group=group Environment=PATH=/usr/bin:/usr/local/bin Environment=NODE_ENV=production WorkingDirectory=/opt/myservice-location [Install] WantedBy=multi-user.targetRecuerde actualizar el demonio del administrador de servicios después de cada cambio en el archivo myservice.service.
Luego, inicie el servicio en ejecución y habilite el servicio para que se inicie en el arranque.
fuente
ACTUALIZACIÓN : actualicé para incluir lo último de pm2:
para muchos casos de uso, utilizar un servicio systemd es la forma más sencilla y adecuada de gestionar un proceso de nodo. para aquellos que ejecutan numerosos procesos de nodo o microservicios de nodo de ejecución independiente en un solo entorno, pm2 es una herramienta con más funciones.
https://github.com/unitech/pm2
http://pm2.io
pm2 monito lista de procesos conpm2 listpm2 logsfuente
El enfoque más simple sería simplemente enviar el comando a un segundo plano.
Luego, puede finalizar el proceso en otro momento. Normalmente hago lo siguiente:
Nota : estoy ejecutando OS X.
fuente
/dev/nulldebería incluirse en la solución completa?Puedes probar:
Me funciona en Mac y Linux.
La salida estará en el
./nohup.outarchivoPero todavía te recomiendo que uses
pm2oforever, porque se usan fácilmente para reiniciar, detener y registrar.fuente
Hay corredores de uso general más avanzados, como
monityrunit.fuente
Para obtener información sobre la forma normal de demonizar en un sistema POSIX, puede buscar el método C.
No he visto suficientes métodos en la API de node.js para permitir que se haga en C a mano. Sin embargo, cuando usa child_process, puede hacer que node.js lo haga por usted:
http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options
Considero que esto es una posible pérdida de tiempo porque es muy probable que su sistema proporcione lo mismo.
Por ejemplo:
http://libslack.org/daemon/manpages/daemon.1.html
Si desea algo portátil (multiplataforma), las otras publicaciones ofrecen soluciones que podrían ser suficientes.
fuente