GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie bringe ich meinen Golang-Webserver dazu, im Hintergrund zu laufen?

Einfache / Brauchbare Dinge zuerst

Wenn Sie ohne großen Aufwand ein Startskript wünschen (d. h. den Prozess bearbeiten, ihn nur vom System verwalten lassen), können Sie einen systemd erstellen Service. Siehe Gregs Antwort für eine detaillierte Beschreibung, wie das geht. Danach können Sie den Dienst mit

starten
systemctl start myserver

Früher hätte ich empfohlen, xinetd auszuprobieren oder etwas Ähnliches für eine feinere Granuarität in Bezug auf Ressourcen- und Berechtigungsverwaltung, aber systemd deckt das bereits ab.

Die Shell verwenden

Sie könnten Ihren Prozess wie folgt starten:

nohup ./myexecutable &

Die & weist die Shell an, den Befehl im Hintergrund zu starten und ihn in der Jobliste zu behalten. Bei einigen Shells wird der Job beendet, wenn die übergeordnete Shell mit dem HANGUP-Signal beendet wird. Um dies zu verhindern, können Sie Ihren Befehl mit nohup Befehl, der das HANGUP-Signal verwirft.

Dies funktioniert jedoch nicht, wenn der aufgerufene Prozess das HANGUP-Signal wieder einschaltet.

Um wirklich sicherzugehen, müssen Sie den Prozess aus der Jobliste der Shell entfernen. Für zwei bekannte Shells kann dies wie folgt erreicht werden:

bash:

./myexecutable &
disown <pid>

zsh:

./myexecutable &!

Töten Sie Ihren Hintergrundjob

Normalerweise gibt die Shell die PID des Prozesses aus, der dann mit kill beendet werden kann Befehl, um den Server zu stoppen. Wenn Ihre Shell die PID nicht druckt, können Sie sie mit

abrufen
echo $!

direkt nach der Ausführung. Dies gibt die PID des gegabelten Prozesses aus.


Sie könnten Supervisord verwenden, um Ihren Prozess zu verwalten.


Linux
  1. So führen Sie den Rsync-Prozess im Hintergrund aus

  2. Wie bekomme ich die Prozess-ID des Hintergrundprozesses?

  3. Wie kann man Node.js als Hintergrundprozess ausführen und nie sterben?

  4. Wie erhalte ich die Startzeit eines lang andauernden Linux-Prozesses?

  5. Wie bekomme ich die Prozess-ID, um einen Nohup-Prozess zu beenden?

So erhalten Sie die beste Leistung vom Nginx-Server

So führen Sie verschiedene PHP-Versionen auf demselben Server aus

Wie starte ich Sintflut im Hintergrund?

So installieren Sie die Webanalyseplattform Matomo auf Ubuntu Server 20.04

So senden Sie Prozesse unter Linux an den Hintergrund

Wie kann ich einen Befehl verzögert im Hintergrund ausführen?