Systemd ist in der Lage, verschiedene Diensttypen zu verarbeiten, insbesondere einen der folgenden
simple
- Ein lang laufender Prozess, der sich nicht selbst im Hintergrund darstellt und an die Shell gebunden bleibt.
forking
- Ein typischer Daemon, der sich selbst davon trennt, dass er ausgeführt wird, und sich selbst effektiv im Hintergrund darstellt.
oneshot
- Ein kurzlebiger Prozess, der voraussichtlich beendet wird.
dbus
- Wie einfach, aber die Benachrichtigung über die Beendigung des Startvorgangs wird über dbus gesendet.
notify
- Wie einfach, aber die Benachrichtigung über das Beenden des Startvorgangs wird über inotify gesendet.
idle
- Wie einfach, aber die Binärdatei wird nach dem Absenden des Jobs gestartet.
In deinem Fall hast du gewählt Type=forking
was bedeutet, dass systemd darauf wartet, dass der Prozess sich selbst aufteilt und der übergeordnete Prozess beendet wird. an, dass der Prozess erfolgreich gestartet wurde. Ihr Prozess tut dies jedoch nicht - er bleibt im Vordergrund und bleibt daher systemctl start
auf unbestimmte Zeit hängen oder bis der Prozess abstürzt.
Stattdessen möchten Sie Type=simple
, was die Standardeinstellung ist, damit Sie die Linie vollständig entfernen können, um den gleichen Effekt zu erzielen. In diesem Modus wartet systemd nicht auf den Abschluss des Startvorgangs der Prozesse (da nicht bekannt ist, wann dies geschehen ist) und setzt die Ausführung und abhängige Dienste sofort fort. In deinem Fall gibt es keine, also spielt das keine Rolle.
Ein kleiner Hinweis zur Sicherheit:
Wenn Sie den Dienst als Root ausführen, wird davon abgeraten, da er weniger sicher ist als der Betrieb als nicht privilegierter Benutzer. Der Grund dafür ist, dass wenn der Angreifer nichts weiter tun muss, um Ihr System vollständig zu besitzen es in jekyll eine Sicherheitslücke gibt, die die Ausführung von Befehlen ermöglicht (möglicherweise über den Code, den es analysiert). Wenn es andererseits als nicht privilegierter Benutzer ausgeführt wird, kann der Angreifer nur so viel Schaden anrichten wie dieser Benutzer und muss nun versuchen, Root-Rechte zu erlangen, um Ihr System vollständig zu besitzen. Es wird lediglich eine zusätzliche Ebene hinzugefügt, auf die Angreifer zugreifen müssen.
Sie können es einfach als derselbe Benutzer ausführen, auf dem Ihr Webserver ausgeführt wird. Dadurch sind Sie jedoch einem weiteren potenziellen Angriff ausgesetzt. Wenn Ihr Webserver eine Sicherheitsanfälligkeit aufweist, die es dem Benutzer ermöglicht, Dateien auf Ihrem System zu manipulieren, kann er die generierten HTML-Dateien oder schlimmstenfalls die Quelldateien ändern und Ihren Server dazu veranlassen, alles zu bedienen, was er will. Wenn die generierten Dateien und Quelldateien jedoch nur vom Webserver gelesen und von einem anderen nicht privilegierten Benutzer beschrieben werden können, können sie nicht so einfach durch einen Angriff auf den Webserver geändert werden.
Wenn Sie jedoch nur statische Dateien von diesem Server bereitstellen und den Server auf dem neuesten Stand halten, sind diese Angriffe sehr, sehr unwahrscheinlich - aber dennoch möglich. Es liegt in Ihrer Verantwortung, die Risiken im Vergleich zum Aufwand für die Einrichtung zu bewerten, basierend darauf, wie kritisch Ihr System ist. Diese beiden Tipps sind jedoch sehr einfach einzurichten und verursachen kaum Wartungsaufwand.
Type=forking
. Darüber hinaus wird es nichtexecStart
als Shell-Erweiterung ausgeführt, so dass es&
am Ende nie als Hintergrund-Flag verstanden wird.