Befehl zum Auflisten von Diensten, die beim Start gestartet werden?

144

Gibt es einen Befehl zum Auflisten von Diensten, die beim Start ausgeführt werden? Ich stelle mir vor, es würde das Parsen /etc/init.d/und die verschiedenen /etc/rc.*Verzeichnisse beinhalten.

Eric H
quelle

Antworten:

104

Sie können einfach den initctl listShell-Befehl verwenden, um den Inhalt des /etc/initvorgeschlagenen dbus-sendBefehls aufzulisten .

Scott
quelle
2
Funktioniert das in Ubuntu 18.04? Ich bekomme "initctl: Befehl nicht gefunden" (in Bash)
Sanjay Manohar
121

Die schnelle Antwort lautet: Es hängt von Ihrem initSystem ab.

Die lange Antwort lautet: Für aktuelle Versionen von Ubuntu haben Sie wahrscheinlich eine Mischung aus Upstart und SystemV . Neuere Versionen von Ubuntu nach 15.04 "Vivid Vervet" (und anderen Linux-Distributionen wie RHEL / CentOS 7) verwenden ab sofort SystemD .

Emporkömmling

So listen Sie alle Dienste auf:

initctl list

initctl show-configDieser Einzeiler kann hilfreich sein, um alle Upstart-Dienste aufzulisten und auf ihnen auszuführen :

initctl list | awk '{ print $1 }' | xargs -n1 initctl show-config

System V

So listen Sie alle Dienste auf:

service --status-all

ODER:

# for init scripts:
ls /etc/init.d/

# for runlevel symlinks:
ls /etc/rc*.d/

SystemD

So listen Sie alle Dienste auf:

systemctl list-unit-files --type=service

ODER:

ls /lib/systemd/system/*.service /etc/systemd/system/*.service
TrinitronX
quelle
9
Dies sollte die akzeptierte Antwort sein.
Sjas
service --status-allzeigt NICHT an, ob Dienste aktiviert sind, um beim Booten zu starten, zumindest nicht unter Ubuntu 16. Zeigt an, ob Dienste derzeit ausgeführt werden oder nicht.
Wildcard
1
Ich musste sudo service --status-allerhalten alle von den Leistungen zu zeigen. Ein paar waren versteckt, als ich nur service --status-allauf einem Nicht-Root-Account lief.
Phlucious
@Phlucious: Danke, dass du das erwähnt hast. Ich nahm an, es war bekannt , dass diese Befehle in der Regel als root ausgeführt werden ( systemctl, service, initctl...) , da sie in der Regel der Systemverwaltung Befehle betrachtet werden.
TrinitronX
13

Die Verzeichnisse /etc/init.dund /etc/rc.*wurden vom ' upstart' Init-Tool abgelöst. Obwohl Skripte in diesen Verzeichnissen wie erwartet ausgeführt werden, wird die neue Methode zum Ausführen von Dingen auf init durch Dateien in definiert/etc/init/

Sie können alle Upstart-Jobs mit auflisten, indem Sie upstart über dbus abfragen:

dbus-send --print-reply --system --dest=com.ubuntu.Upstart \
        /com/ubuntu/Upstart com.ubuntu.Upstart0_6.GetAllJobs

Möglicherweise müssen Sie Änderungen 0_6vornehmen, um die Version Ihres Upstarts widerzuspiegeln. Dieser Befehl funktioniert bei meiner übersichtlichen Installation.

Jeremy Kerr
quelle
3
@Eric H: Könnten Sie stattdessen die Antwort unten als richtig einstellen - initctl listist viel schöner als dieser dbus-Befehl. Ich möchte diese Antwort hier als Referenz hinterlassen (anstatt sie komplett zu löschen).
Jeremy Kerr
12

Wenn Sie eine schöne grafische Darstellung der Dienste und der zum Booten erforderlichen Zeit wünschen, versuchen Sie Folgendes:

apt-get install bootchart
BuZZ-dEE
quelle
11

Ich würde es verwenden, initctl show-config <servicename>um wirklich die Details zu erhalten, wann / ob Ihr Dienst während des Startvorgangs gestartet wird.

Wie so:

$ initctl show-config myservice
myservice
  start on runlevel [2345]
  stop on runlevel [!2345]

Oder für NFS4 idmap-daemon:

$ initctl show-config idmapd
idmapd
  start on (local-filesystems or mounting TYPE=nfs4)
  stop on runlevel [06]

chkconfig ist nur auf RedHat-basierten Systemen imho vorzuziehen.

CBmemnon
quelle
1
Das ist die richtige Antwort. Ich habe keine Ahnung, warum all die falschen und unvollständigen Antworten so hoch bewertet werden.
Cerin
1
Dies funktioniert nicht für Benutzer von SysV. Ich bin damit einverstanden, dass dies eine gute Antwort ist, aber es ist unvollständig.
Gabriel Netto
9

Am 12.04 könnten wir verwenden:

sudo apt-get install chkconfig
chkconfig --list

aber es wurde in 12.10 entfernt .

Beispielausgabe:

acpi-support              0:off  1:off  2:on   3:on   4:on   5:on   6:off
acpid                     0:off  1:off  2:off  3:off  4:off  5:off  6:off
apparmor                  0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
Ciro Santilli ist ein Schauspieler
quelle
2
Funktioniert nicht in Ubuntu. packages.ubuntu.com/
AB
@AB danke, dass du mich informiert hast! Heutzutage kommt es selten vor, dass Abwähler Kommentare abgeben. Das erfordert Mut und ermöglicht mir zu lernen. aktualisiert mit der Version, in der es funktioniert.
Ciro Santilli am
On Precise: packages.ubuntu.com/precise/chkconfig
Ciro Santilli am
0

Neben Systemdiensten und Skripten unter:

/etc/init.d/
/ lib / systemd / system /
/ etc / systemd / system /

Es gibt wahrscheinlich auch AutoStart-Anwendungen , zum Beispiel:

find / -name "*autostart*"

ls -1 "/etc/xdg/autostart" "/home/$USER/.config/autostart" "/usr/share/gdm/autostart"  "/usr/share/gnome/autostart"
Noam Manos
quelle
-2

Gawk benutzen:

ls -l /etc/rc*.d/* | gawk 'match($0, /rc([0-6S]).d.*\/(.*)$/, a) {l[a[2]]=l[a[2]]a[1]","}; END{for(v in l){print v,substr(l[v],1,length(l[v])-1)}}'

Beispielausgabe:

$ ls -l /etc/rc*.d/* | gawk 'match($0, /rc([0-6S]).d.*\/(.*)$/, a) {l[a[2]]=l[a[2]]a[1]","}; END{for(v in l){print v,substr(l[v],1,length(l[v])-1)}}' | egrep README
README 0,1,2,3,4,5,6,S
Carlos Alvsan
quelle