Onde estão as unidades / serviços do systemd localizados no Ubuntu?

3

Eu continuo encontrando, enquanto pesquiso, que eles estão localizados em / usr / lib / systemd / system / e / etc / systemd / system /. No entanto, no meu Ubuntu, o primeiro nem sequer existe, e o outro tem apenas alguns serviços

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

Onde estão os outros?

Quando executo systemctl list-units, vejo muitos serviços, mas não sei onde localizá-los. Por exemplo, onde está o meu plexmediaserver.service? Eu preciso saber porque é onde eu quero colocar minhas outras unidades.

    
por Guerlando OCs 27.01.2017 / 04:28

2 respostas

9

Os arquivos de serviço fornecidos pelo pacote geralmente estão localizados em /lib/systemd/system . Por exemplo, pesquise .service no pacote índice .

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

Os últimos são para sessões de usuários. O IIRC Ubuntu 16.04 ainda usa upstart para sessões de usuários, então esses arquivos só são aplicáveis a partir de 16.04.

Para um serviço específico, para ver o que o systemd está lendo, execute 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
    
por muru 27.01.2017 / 04:39
5

Existem boas ferramentas para saber sempre que você precisar localizar algo.

O primeiro é locate , que é usado para localizar arquivos pelo nome. Ele usa um índice pré-construído, então é extremamente rápido. No entanto, às vezes, ele perde novos arquivos que não foram indexados ou também pode perder arquivos com permissões restritivas. Neste caso, um comando rápido locate encontraria todos os arquivos sytemd no Ubuntu:

locate systemd

Se você quiser se concentrar no arquivo Plex, use um canal para filtrar os resultados:

locate systemd | grep plex

A outra ferramenta a ser conhecida é find , que faz uma pesquisa ao vivo de um diretório específico para localizar arquivos. Tem um lote de opções. Verifique man find para detalhes. Para procurar plexmediaserver.service em qualquer lugar no seu sistema, você usaria:

find / -name plexmediaserver.service

Finalmente, neste caso, você provavelmente sabe qual pacote pertence ao arquivo que você está procurando. Se você não tiver certeza do nome exato do pacote, poderá usar essa sintaxe para encontrar todo o pacote que contenha 'plex' em seu nome:

dpkg -l '*plex*'

Se você achar que o pacote em que está interessado é chamado 'plexmediaserver', você pode usar essa sintaxe para listar todos os arquivos desse pacote:

dpkg -L plexmediaserver

Novamente, você pode usar um canal para filtrar os resultados apenas para o arquivo de serviço que está procurando:

dpkg -L plexmediaserver | grep plexmediaserver.service

Agora você poderá encontrar arquivos para muitos casos comuns.

    
por Mark Stosberg 27.01.2017 / 14:57

Tags