Dove si trovano le unità / i servizi di systemd in Ubuntu?


23

Continuo a trovare, mentre google, che si trovano in / usr / lib / systemd / system / e / etc / systemd / system /. Tuttavia, nel mio Ubuntu, il primo non esiste nemmeno e l'altro ha solo pochi servizi

bluetooth.target.wants                      default.target.wants           hybrid-sleep.target.wants    shutdown.target.wants
dbus-org.bluez.service                      display-manager.service        multi-user.target.wants      sockets.target.wants
dbus-org.freedesktop.Avahi.service          display-manager.service.wants  network-online.target.wants  suspend.target.wants
dbus-org.freedesktop.ModemManager1.service  getty.target.wants             paths.target.wants           sysinit.target.wants
dbus-org.freedesktop.nm-dispatcher.service  graphical.target.wants         plexmediaserver.service      syslog.service
dbus-org.freedesktop.thermald.service       hibernate.target.wants         printer.target.wants         timers.target.wants

Dove sono gli altri?

Quando eseguo le unità di elenco systemctl vedo tanti servizi ma non so dove trovarli. Ad esempio, dov'è il mio plexmediaserver.service? Devo sapere perché è lì che voglio mettere le mie altre unità.

Risposte:


33

I file di servizio forniti dal pacchetto si trovano generalmente in /lib/systemd/system. Ad esempio, cercare .servicenell'indice del pacchetto .

Da man systemd.unit:

/etc/systemd/system/*
/run/systemd/system/*
/lib/systemd/system/*
...

$XDG_CONFIG_HOME/systemd/user/*
$HOME/.config/systemd/user/*
/etc/systemd/user/*
$XDG_RUNTIME_DIR/systemd/user/*
/run/systemd/user/*
$XDG_DATA_HOME/systemd/user/*
$HOME/.local/share/systemd/user/*
/usr/lib/systemd/user/*

Questi ultimi sono per sessioni utente. IIRC Ubuntu 16.04 utilizza ancora upstart per le sessioni utente, quindi quei file sono applicabili solo dopo il 16.04.

Per un servizio specifico, per vedere cosa sta leggendo systemd, eseguire systemctl status <service>o systemctl show <service>:

$ systemctl show ssh.service | grep Path
FragmentPath=/lib/systemd/system/ssh.service
DropInPaths=/etc/systemd/system/ssh.service.d/override.conf
$ systemctl status ssh.service
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/ssh.service.d
           └─override.conf
   Active: active (running) since Thu 2017-01-26 16:06:53 JST; 21h ago
 Main PID: 948 (sshd)
   CGroup: /system.slice/ssh.service
           └─948 /usr/sbin/sshd -D

1
Grazie! Inoltre, dove sono gli altri? Voglio sapere tutti i posti dove cercherà il processo di init systemd
Guerlando OCs

1
@GuerlandoOCs vedi aggiornamento.
Muru,

11

Ci sono buoni strumenti da sapere ogni volta che è necessario individuare qualcosa.

Il primo è locate, che viene utilizzato per individuare i file per nome. Utilizza un indice predefinito, quindi è estremamente veloce. Tuttavia, a volte manca nuovi file che non sono stati indicizzati o può anche mancare file con autorizzazioni restrittive. In questo caso, un locatecomando rapido troverebbe tutti i file systemd su Ubuntu:

locate systemd

Se vuoi concentrarti su quel file Plex, puoi usare una pipe per filtrare i risultati:

locate systemd | grep plex

L'altro strumento da conoscere è find, che esegue una ricerca live di una directory particolare per trovare i file. Ha molte opzioni. Controlla i man finddettagli. Per cercare plexmediaserver.serviceovunque nel tuo sistema, dovresti usare:

find / -name plexmediaserver.service

Infine, in questo caso, probabilmente sai a quale pacchetto appartiene il file che stai cercando. Se non si è sicuri del nome esatto del pacchetto, è possibile utilizzare questa sintassi per trovare tutti i pacchetti che contengono "plex" nel loro nome:

dpkg -l '*plex*'

Se scopri che il pacchetto che ti interessa si chiama 'plexmediaserver', puoi usare questa sintassi per elencare tutti i file in quel pacchetto:

dpkg -L plexmediaserver

Ancora una volta, puoi usare una pipe per filtrare i risultati solo sul file di servizio che stai cercando:

dpkg -L plexmediaserver | grep plexmediaserver.service

Ora sarai in grado di trovare file per molti casi comuni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.