Woher weiß ich, ob ich systemd auf meinem linux verwende?

7839
Lucho

Wie kann ich wissen, ob mein Linux mit systemdwelchem ​​Paket beginnt ?

5
auf rpm Distros, `rpm --quiet --query systemd`. dies vermeidet das hanky Panky bei der Suche nach einem Prozess oder Pid oder Symlink. Trevor Boyd Smith vor 6 Jahren 0
auch https://unix.stackexchange.com/questions/18209/detect-init-system-using-the-shell Trevor Boyd Smith vor 6 Jahren 1

2 Antworten auf die Frage

11
ecube

Prüfen Sie, welcher Prozess als PID 1 ausgeführt wird. Sie können dies ausführen, indem Sie ps aux | lessnach oben scrollen. Wenn Sie eine systemd-Sache als PID 1 ausführen, wird systemd ausgeführt.

Führen Sie alternativ aus, um systemctldie laufenden systemd-Einheiten aufzulisten.

Vielleicht möchten Sie auch überprüfen, was / sbin / init ist. file /sbin/initzeigt an, ob es sich um eine echte ausführbare Datei handelt oder ob es sich um eine symbolische Verknüpfung mit der ausführbaren Datei eines anderen Pakets handelt. In einer Systemd-Box zum Beispiel:

root@boxy / # file /sbin/init /sbin/init: symbolic link to ../lib/systemd/systemd 

Weitere Informationen finden Sie hier: https://en.wikipedia.org/wiki/Linux_startup_process

BEARBEITEN: Wie bereits im Kommentar von Deltab erwähnt ps aux | less, ps 1ist dies ein besserer Weg, als zu verwenden. Vielen Dank für das Aufräumen!

EDIT2: Eine andere Möglichkeit, genau zu sehen, was Sie auf Ihrem System haben, besteht darin, zu tippen man initund zu sehen, auf welcher Man-Seite des Programms Sie sich befinden.

Eine einfachere Möglichkeit zu sehen, was mit pid 1 läuft, ist "ps 1" (die Nummer 1). deltab vor 8 Jahren 2
@deltab Danke fürs Aufräumen! Ich werde es in der Antwort bearbeiten. ecube vor 8 Jahren 0
Tolle Jungs (@ deltab, @ dma1324) !!! Mein `ps 1` zeigt` / sbin / init` und meine `file / sbin / init` zeigt eine Binärdatei. Ich denke also, dass es nicht systemd ist. Dann habe ich versucht, den Befehl `systemctl` auszuführen und den Fehler" Befehl wurde nicht gefunden "zu erhalten. Ich bin jetzt sicher, dass ich kein systemd auf meinem Linux habe. Lucho vor 8 Jahren 0
3
sborsky

Ich weiß, dass dies eine alte Frage ist, aber da ich mir gerade die gleiche Frage gestellt habe - hier sind meine 2ct.

Beste Lösung, die ich mir ausgedacht habe

ps --no-headers -o comm 1 

Dies gibt entweder systemdoder zurück initund erscheint in Linux-Distributionen und -Versionen zuverlässig.

file /sbin/initwürde mit Hilfe von Pattern-Matching funktionieren. Die Ausgabe von ps 1erscheint nicht hilfreich, da auf einigen Linux-Distributionen trotz des verwendeten Systemsd 'init' (der Symlink) gedruckt wird.

Debian 8

$ ps 1 PID TTY STAT TIME COMMAND 1 ? Ss 0:02 /sbin/init $ file /sbin/init /sbin/init: symbolic link to /lib/systemd/systemd 

RHEL 7

$ ps 1 PID TTY STAT TIME COMMAND 1 ? Ss 7:46 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 $ file /sbin/init /sbin/init: symbolic link to `../lib/systemd/systemd' 

SLES 12

$ ps 1 PID TTY STAT TIME COMMAND 1 ? Ss 0:24 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 $ file /sbin/init /sbin/init: symbolic link to `../usr/lib/systemd/systemd' 

openSUSE 13.1

$ ps 1 PID TTY STAT TIME COMMAND 1 ? Ss 0:33 /sbin/init showopts $ /sbin/init: symbolic link to `../usr/lib/systemd/systemd'