Einen Daemon neu kompilieren und neu starten

265
Wasabi

Ich entwickle einen Server-Daemon. Ich habe bereits eine funktionale Version dieses Servers ausgeführt, aber jetzt habe ich eine neue Version davon erstellt. Wie ersetze ich den aktuellen Prozess durch den neuen?

Kann ich nur verwenden service [daemon-name] restart? Beendet dies den aktuellen Prozess und startet ein neues von derselben (jetzt aktualisierten) ausführbaren Datei? Oder startet es einfach das gleiche (jetzt veraltete) Binärprogramm neu?

Kann ich einfach die neue Version starten und erwarten, dass sie die alte ersetzt? Oder würden sie parallel laufen (nicht meine Absicht)?

Auch (obwohl dies eine ganz andere Frage sein kann), konnte ich den aktuellen Server als Daemon auf meinem Konto starten, obwohl ich kein Administrator bin. Ich habe versucht es zu stoppen, aber das verlangt das rootPasswort. Gibt es eine Möglichkeit, dies zu tun, ohne meinen Netzwerkadministrator einbeziehen zu müssen?

0

1 Antwort auf die Frage

1
virtex

Der serviceBefehl ist ein Wrapper, der zum Ausführen von Skripts in /etc/init.d verwendet wird. Wenn Sie einen Daemon geschrieben haben und den Dienstbefehl verwenden möchten, müssen Sie ein Skript erstellen, das die Argumente Start, Stop und Neustart akzeptiert, um Ihren Daemon zu verwalten, und es in /etc/init.d ablegen. Seine Fähigkeit, zu starten, zu stoppen und neu zu starten, würde in diesem Skript definiert.

Aufgrund Ihrer Frage klingt es jedoch so, als hätten Sie keinen Root-Zugriff auf den betreffenden Rechner. In diesem Fall würden Sie den serviceBefehl nicht verwenden . Stattdessen können Sie Ihren eigenen Wrapper dafür schreiben oder ihn direkt von der Befehlszeile aus ausführen.

Um Ihre Frage zur Ausführung der neuen Version zu beantworten, müssen Sie zuerst die laufende Version stoppen. Solange es unter Ihrem Konto läuft, können Sie es beenden, ohne Root-Zugriff zu benötigen. Der einfachste Weg, einen laufenden Prozess anhand des Namens zu beenden, ist mit dem pkillBefehl:

pkill -x mydaemon 

Nach dem Herunterfahren starten Sie einfach Ihren Daemon normal neu. Wenn Sie dies in ein Skript einfügen möchten, können Sie es in Ihr Verzeichnis ~ / bin oder an einen anderen Speicherort legen, den Sie normalerweise zum Speichern von Skripts und Binärdateien verwenden. Ihr Skript könnte so einfach sein:

#!/bin/bash pidof mydaemon >/dev/null && pkill -x mydaemon /home/wasabi/bin/mydaemon