systemdユニット/サービスはUbuntuのどこにありますか?


23

グーグルしながら、それらが/ usr / lib / systemd / system /と/ etc / systemd / system /にあることを見つけ続けます。しかし、私のubuntuでは、最初のものは存在すらしておらず、他のものはほんの数個のサービスしか持っていません

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 list-unitsを実行すると、非常に多くのサービスが表示されますが、それらの場所はわかりません。たとえば、plexmediaserver.serviceはどこにありますか?それが他のユニットを置きたい場所だからです。

回答:


33

パッケージが提供するサービスファイルはすべて通常にあり/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/*

後者はユーザーセッション用です。IIRC Ubuntu 16.04は引き続きユーザーセッションにupstartを使用するため、これらのファイルは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

1
ありがとうございました!また、他の人はどこにいますか?私はsystemdにinitプロセスが探しますすべての場所を知りたい
Guerlando経口避妊薬

1
@GuerlandoOCsの更新を参照してください。
ムル

11

何かを見つける必要があるときはいつでも知っておくと便利なツールがあります。

最初はlocate、名前でファイルを見つけるために使用されます。事前に作成されたインデックスを使用するため、非常に高速です。ただし、インデックスに登録されていない新しいファイルを見逃したり、許可が制限されているファイルを見逃したりする場合があります。この場合、クイックlocateコマンドはUbuntuのすべてのsystemdファイルを検索します。

locate systemd

そのPlexファイルに注目したい場合は、パイプを使用して結果をフィルタリングできます。

locate systemd | grep plex

知っておくべきもう1つのツールfindは、特定のディレクトリをライブ検索してファイルを見つけることです。それは持っている多くのオプションを。詳細man findを確認してください。plexmediaserver.serviceシステム上の任意の場所を探すには、次を使用します。

find / -name plexmediaserver.service

最後に、この場合、おそらく、あなたが探しているファイルが属するパッケージを知っているでしょう。正確なパッケージ名がわからない場合は、次の構文を使用して、名前に「plex」を含むすべてのパッケージを検索できます。

dpkg -l '*plex*'

興味のあるパッケージの名前が「plexmediaserver」であることがわかった場合、この構文を使用してそのパッケージ内のすべてのファイルをリストできます。

dpkg -L plexmediaserver

繰り返しますが、パイプを使用して、探しているサービスファイルだけに結果をフィルターできます。

dpkg -L plexmediaserver | grep plexmediaserver.service

これで、多くの一般的なケースのファイルを見つけることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.