web-dev-qa-db-fra.com

Où se trouvent les unités / services systemd dans Ubuntu?

Pendant que nous cherchions sur Google, je continue de constater qu’ils se trouvent dans/usr/lib/systemd/system/et/etc/systemd/system /. Cependant, dans mon Ubuntu, le premier n’existe même pas, et l’autre n’a que quelques services

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

Où sont les autres?

Lorsque j'exécute les unités de liste systemctl, je vois autant de services mais je ne sais pas où les localiser. Par exemple, où se trouve mon plexmediaserver.service? J'ai besoin de savoir parce que c'est là que je veux placer mes autres unités.

12
Guerlando OCs

Les fichiers de service fournis par le paquet sont tous généralement situés dans /lib/systemd/system. Par exemple, recherchez .service dans l'index du package .

De 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/*

Les derniers sont pour les sessions utilisateur. IIRC Ubuntu 16.04 utilise toujours la méthode upstart pour les sessions d’utilisateur. Par conséquent, ces fichiers ne sont applicables qu’après 16.04.

Pour un service spécifique, pour voir quel systemd est en train de lire, exécutez systemctl status <service> ou 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
22
muru

Il existe de bons outils à connaître chaque fois que vous devez localiser quelque chose.

Le premier est locate, qui permet de localiser les fichiers par leur nom. Il utilise un index pré-construit, il est donc extrêmement rapide. Cependant, il manque parfois de nouveaux fichiers qui n'ont pas été indexés, ou peut-être aussi des fichiers avec des autorisations restrictives. Dans ce cas, une commande rapide locate trouverait tous les fichiers systemd sur Ubuntu:

locate systemd

Si vous souhaitez vous concentrer sur ce fichier Plex, vous pouvez utiliser un tuyau pour filtrer les résultats:

locate systemd | grep plex

L'autre outil à connaître est find, qui effectue une recherche en direct dans un répertoire particulier pour trouver des fichiers. Il a un lot d'options. Vérifiez man find pour plus de détails. Pour rechercher plexmediaserver.service n'importe où sur votre système, vous utiliseriez:

find / -name plexmediaserver.service

Enfin, dans ce cas, vous savez probablement à quel package auquel appartient le fichier que vous recherchez. Si vous n'êtes pas sûr du nom exact du paquet, vous pouvez utiliser cette syntaxe pour trouver tous les paquets qui contiennent "plex" dans leur nom:

dpkg -l '*plex*'

Si vous trouvez que le paquet qui vous intéresse s'appelle 'plexmediaserver', vous pouvez utiliser cette syntaxe pour lister tous les fichiers de ce paquet:

dpkg -L plexmediaserver

Encore une fois, vous pouvez utiliser un tuyau pour filtrer les résultats uniquement dans le fichier de service que vous recherchez:

dpkg -L plexmediaserver | grep plexmediaserver.service

Vous pourrez maintenant trouver des fichiers pour de nombreux cas courants.

7
Mark Stosberg