Das System wurde nicht mit systemd als Init-System (PID 1) gestartet. Kann nicht funktionieren

116

Ich versuche, den Redis-Installationsprozess zu verfolgen, wie in diesem Artikel von Digital Ocean in WSL beschrieben. Die installierte Ubuntu-Version ist Ubuntu 18.04.

Alles in der Redis-Installation ist in Ordnung, aber als ich versuchte, dies auszuführen, sudo systemctl start redisbekam ich diese Meldung.

System has not been booted with systemd as init system (PID 1). Can't operate.

Irgendeine Idee, was ich damit machen soll?

Fil
quelle
1
Folgen Sie dieser Methode github.com/Microsoft/WSL/issues/365
Biswapriyo

Antworten:

224

Verwenden Sie stattdessen: sudo service redis-server start

Ich hatte das gleiche Problem beim Stoppen / Starten anderer Dienste in Ubuntu unter WSL. Dies funktionierte, wo systemctl nicht funktionierte.

Und man könnte sich vernünftigerweise fragen: "Woher wissen Sie, dass der Dienstname 'Redis-Server' war?" Sie können sie mit sehenservice --status-all

Charlie Arehart
quelle
Ja .. Ich benutze dies auch, seit ich das Problem geschrieben habe, dass einer aus dem Kommentar auch einen Kommentar hat, der hilft
Fil
Großartig, vielen Dank. Dies funktioniert für fast alle Dienste, die in einer WSL-Umgebung installiert wurden, während wir systemctl nicht zum Starten | Stoppen | Neustarten von Diensten verwenden können.
Bayu Dwiyan Satria
1
Da dies die am höchsten bewertete Antwort ist, wäre es schön gewesen, ein bisschen mehr Informationen darüber zu sehen, was hier passiert. Nach meinem Verständnis servicehandelt es sich um eine Abstraktion, die entweder auf init.d( sysv init) zurückgreifen kann oder auf systemddie, wie die implizierte Frage impliziert, nicht funktioniert. serverfault.com/questions/867322/…
fraleone
fraleone, da es meine Antwort war, werde ich versuchen, Ihr Anliegen anzusprechen. Um klar zu sein, ging es um einen Fehler beim Starten von Redis (speziell für WSL), bei dem die Verwendung des an anderer Stelle dokumentierten allgemeinen Startbefehls systemctl start redisfür das OP nicht funktionierte. Es hat auch bei mir nicht funktioniert. Ich habe diese Alternative gefunden ( redis-server start) und bin hierher gekommen, um sie als Antwort anzubieten. Ich bin froh, dass es anderen geholfen hat. Aber ich war / bin nicht in der Lage zu erklären, "was hier passiert" oder warum es Ihren Erwartungen widerspricht. Fühlen Sie sich frei, näher darauf einzugehen, wenn Sie mehr finden, oder vielleicht werden es andere tun.
Charlie Arehart
9

Anstatt sudo systemctl start redis zu verwenden, verwenden Sie: sudo /etc/init.d/redis start

Derzeit haben wir kein System in der WSL

Byron Gavras
quelle
Wissen Sie, ob es auf WLS 2 verfügbar ist?
thanos.a
Von einer Schnellsuche wird WSL2 nicht mit systemd gebootet. Hier gibt es jedoch eine Problemumgehung, die ich nicht getestet habe. github.com/microsoft/WSL/issues/994#issuecomment-502055417
Byron Gavras
6

Wenn Sie Docker verwenden, können Sie mit diesem Befehl ein Image ausprobieren, auf dem Ubuntu mit System D bereits aktiv ist:

docker run -d --name redis --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro jrei/systemd-ubuntu:18.04

Dann müssen Sie nur noch ausführen:

docker exec -it redis /bin/bash

und dort können Sie einfach Redis installieren, starten, neu starten oder was auch immer Sie benötigen.

Carlos Saltos
quelle
Docker wird in der WSL nicht ausgeführt.
Aditya T
2
@Aditya Es tut in WLS 2
thanos.a
3

Ich hatte dieses Problem beim Ausführen von WSL 2

Die Lösung war der Befehl

 $ sudo dockerd

Wenn Sie danach immer noch ein Problem mit der Berechtigung haben, führen Sie den folgenden Befehl aus:

 $ sudo usermod -aG docker your-user
Felipe Augusto
quelle
1
Sie müssten auch die Distribution starten. Ich habe also 2 Terminals, eines läuft Docker und das andere benutze ich für meine Arbeit
Svetoslav Marinov
1

Ich habe versucht, Docker in Ubuntu und WSL zu starten.

Das hat bei mir funktioniert,

sudo service docker start

Sangeetha
quelle
0

Das hat bei mir funktioniert (mit WSL)

sudo /etc/init.d/redis start

(Überprüfen Sie für jeden anderen Dienst den Ordner init.d auf Dateinamen.)

Daniel Assayag
quelle
0

Verwenden Sie diesen Befehl, um jeden Dienst auszuführen. Schreiben Sie einfach einen Namensdienst, zum Beispiel:

für xrdp :

sudo /etc/init.d/xrdp start

für redis :

sudo /etc/init.d/redis start

(Überprüfen Sie für jeden anderen Dienst den Ordner init.d auf Dateinamen.)

Säugetier
quelle
-1

Ich bin auf das gleiche Problem gestoßen! ps --no-headers -o comm 1 Nachdem dies im Terminal ausgeführt wurde, gibt das System entweder systemd oder init zurück

Wenn 'init' zurückgegeben wird, funktioniert der Befehl 'systemctl' für Ihr System nicht

RoninS28
quelle
Könnten Sie bitte etwas näher auf Ihre Antwort eingehen?
jpnadas
Um Ihren Mongod-Prozess auszuführen und zu verwalten, verwenden Sie das integrierte Init-System Ihres Betriebssystems. Die jüngsten Linux-Versionen verwenden in der Regel systemd (der den Befehl systemctl verwendet), während die älteren Versionen von Linux in der Regel System V init (der den Befehl service verwendet) verwenden. Wenn Ihr System systemd verwendet , lautet der Befehl: - 'sudo systemctl start mongod 'und wenn es System V Init verwendet, lautet der Befehl: -' sudo service mongod start '
RoninS28