503 Stimmen

Wie lässt man Node.js als Hintergrundprozess laufen und stirbt nicht?

Ich verbinde mich mit dem Linux-Server über putty SSH. Ich habe versucht, ihn als Hintergrundprozess wie folgt auszuführen:

$ node server.js &

Nach 2,5 Stunden wird das Terminal jedoch inaktiv und der Prozess bricht ab. Kann ich den Prozess irgendwie am Leben erhalten, auch wenn das Terminal nicht angeschlossen ist?


Bearbeiten 1

Eigentlich habe ich versucht nohup aber sobald ich das Putty-SSH-Terminal schließe oder den Internetzugang unterbreche, wird der Serverprozess sofort beendet.

Muss ich in Putty irgendetwas tun?


Bearbeiten 2 (am Feb, 2012)

Es gibt eine node.js Modul, für immer . Der Node.js-Server wird als Daemon-Dienst ausgeführt.

8 Stimmen

In meinem Fall funktioniert nohup, wenn ich Terminal durch Eingabe von exit . Wenn ich nur das Putty-Fenster schließe, schlägt es fehl.

16voto

Daniel Gallagher Punkte 6742

nohup ermöglicht die Fortsetzung des Programms auch nach dem Tod des Terminals. Ich habe tatsächlich Situationen erlebt, in denen nohup verhindert die korrekte Beendigung der SSH-Sitzung, so dass Sie auch die Eingabe umleiten sollten:

$ nohup node server.js </dev/null &

Je nachdem, wie nohup konfiguriert ist, müssen Sie möglicherweise auch die Standardausgabe und den Standardfehler in Dateien umleiten.

9voto

Donald Derek Punkte 2431

Nohup und screen bieten großartige leichte Lösungen für die Ausführung von Node.js im Hintergrund. Node.js-Prozessmanager ( PM2 ) ist ein praktisches Werkzeug für die Bereitstellung. Installieren Sie es mit npm global auf Ihrem System:

npm install pm2 -g

um eine Node.js-Anwendung als Daemon auszuführen:

pm2 start app.js

Sie können sie optional mit Keymetrics.io ein von Unitech entwickeltes SAAS für die Überwachung.

7voto

thiagowfx Punkte 4118

Ich habe diese Funktion in meiner Shell rc-Datei, basierend auf @Yoichis Antwort:

nohup-template () {
    [[ "$1" = "" ]] && echo "Example usage:\nnohup-template urxvtd" && return 0
    nohup "$1" > /dev/null 2>&1 &
}

Sie können es so verwenden:

nohup-template "command you would execute here"

7voto

Arnab Nandy Punkte 6148
$ disown node server.js &

Der Befehl wird aus der aktiven Aufgabenliste entfernt und an den Hintergrund gesendet

6voto

S.Lott Punkte 371691

Haben Sie etwas über die nohup Befehl?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X