Где systemd единицы/сервисы расположены в Ubuntu?

Я продолжаю находить при поиске с помощью Google, что они расположены в/usr/lib/systemd/system/и/etc/systemd/system/. Однако в моей человечности, первое даже не существует, и другой имеет только несколько сервисов

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

Где другие?

Когда я выполняю systemctl единицы списка, я вижу столько сервисов, но я не знаю, где определить местоположение их. Например, где мой plexmediaserver.service? Я должен знать, потому что это - то, где я хочу поместить свои другие единицы.

21
задан 26 January 2017 в 20:28

3 ответа

Обеспеченные пакетом сервисные файлы все обычно располагаются в /lib/systemd/system. Например, поиск .service в индексе .

пакета От 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/*

последние - для сеансов пользователя. Ubuntu 16.04 IIRC все еще использует выскочку для сеансов пользователя, таким образом, те файлы только применимы от после 16.04.

Для определенного сервиса, для наблюдения то, что systemd читает, выполнение systemctl status <service> или 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
30
ответ дан 23 November 2019 в 01:41

Существуют хорошие инструменты для знания о том, каждый раз, когда необходимо определить местоположение чего-то.

первое locate, который используется для определения местоположения файлов по имени. Это использует предварительно созданный индекс, таким образом, это чрезвычайно быстро. Однако это иногда пропускает новые файлы, которые не были индексированы или могут также пропустить файлы со строгими полномочиями. В этом случае быстрое locate команда нашло бы все sytemd файлы на Ubuntu:

locate systemd

, Если Вы хотите сфокусироваться на том, что файл Plex, можно использовать канал для фильтрации результатов:

locate systemd | grep plex

другой инструмент для знания о find, который делает живой поиск конкретного каталога для нахождения файлов. Это имеет партия из опций. Проверьте man find на детали. Для поиска plexmediaserver.service где угодно в системе Вы использовали бы:

find / -name plexmediaserver.service

Наконец, в этом случае, Вы, вероятно, знаете, которому принадлежит пакет , который файл Вы ищете. Если Вы не уверены в точном имени пакета, можно использовать этот синтаксис для нахождения всего пакета, которые содержат 'plex' на их имя:

dpkg -l '*plex*'

, Если Вы находите, что пакет интересуетесь именованным 'plexmediaserver', затем можно использовать этот синтаксис для списка всех файлов в том пакете:

dpkg -L plexmediaserver

Снова, можно использовать канал для фильтрации результатов в просто сервисный файл, который Вы ищете:

dpkg -L plexmediaserver | grep plexmediaserver.service

Теперь Вы сможете найти файлы для многих общих падежей.

10
ответ дан 23 November 2019 в 01:41

Использование команды systemd-analysis :

Все папки, которые могут содержать пользовательские сервисы:

systemd-analyze --user unit-paths

Я предпочитаю systemd-analysis --global unit-paths

Все папки, которые могут содержать системные службы:

systemd-analyze --system unit-paths

См .: справочная страница

5
ответ дан 21 March 2020 в 07:26

Другие вопросы по тегам:

Похожие вопросы: