systemdを使用しても、一部のプロセスはinitを介して開始されます。

systemdを使用しても、一部のプロセスはinitを介して開始されます。

私がするとき

ll /proc/1/exe

わかりました。

lrwxrwxrwx. 1 root root 0 Oct 16 11:28 /proc/1/exe -> /usr/lib/systemd/systemd

systemdこれは代わりにデーモンを実行していることを意味しますinit

しかし、私がリストしたとき

ll /etc/init.d/

まだ実行中のサービスが表示されますinit(出力は削除されます)。

-rwxr-xr-x   1 root root  2269 Apr 22  2017 acpid*
-rwxr-xr-x   1 root root  5336 Apr 15  2016 alsa-utils*
-rwxr-xr-x   1 root root  2014 Dec 29  2014 anacron*
-rwxr-xr-x   1 root root  4335 Mar 23  2018 apparmor*
-rwxr-xr-x   1 root root  2802 Jan  3  2018 apport*
-rwxr-xr-x   1 root root  2134 Jul  7  2015 autofs*
-rwxr-xr-x   1 root root  2401 Nov  5  2015 avahi-daemon*
-rwxr-xr-x   1 root root  2968 Mar  2  2016 bluetooth*
-rwxr-xr-x   1 root root  1275 Jan 20  2016 bootmisc.sh*
-rwxr-xr-x   1 root root  2125 Apr 27  2016 brltty*
-rwxr-xr-x   1 root root  1904 Nov 18  2015 cgroupfs-mount*
-rwxr-xr-x   1 root root  3807 Jan 20  2016 checkfs.sh*
-rwxr-xr-x   1 root root  1098 Jan 20  2016 checkroot-bootclean.sh*
-rwxr-xr-x   1 root root  9353 Jan 20  2016 checkroot.sh*
-rwxr-xr-x   1 root root  1232 Aug  9 09:32 console-setup.sh*
-rwxr-xr-x   1 root root  3049 Apr  6  2016 cron*
-rwxr-xr-x   1 root root  2804 Mar 28  2018 cups*
-rwxr-xr-x   1 root root  1961 Feb 14  2016 cups-browsed*
-rwxr-xr-x   1 root root  2813 Dec  2  2015 dbus*
-rw-r--r--   1 root root  1195 Oct  7 06:13 .depend.boot
-rw-r--r--   1 root root  2459 Oct  7 06:13 .depend.start
-rw-r--r--   1 root root  1926 Oct  7 06:13 .depend.stop

より多くのサービスをリストするほど

ll /lib/systemd/system

誰かがなぜそんなに多くのサービスが実行されているのか教えてもらえますかinit

答え1

systemdシステムでのみ実行され、を含むすべてのサービスが開始されます/etc/init.d

initレガシー(「sysvinit」または「System V init」とも呼ばれます)を使用する以前のシステムとの互換性のために、systemdはレガシーinitスクリプトを使用してサービスを開始できるメカニズムを実装します。

この互換性レイヤーは、以下で構成されます。systemd-sysv-ジェネレータ、古い初期化スクリプトを見つけて、デフォルトのシステムサービス単位でラップします。 (たとえば、/etc/init.d/avahi-daemon内部に実行中のラッパーがあるラッパーを見つけて作成し、停止および再ロード操作についても同様に、既存のinitスクリプトの動作をシミュレートします。)/run/systemd/system/avahi-daemon.serviceExecStart=/etc/init.d/avahi-daemon start

一部のディストリビューションでは、sysvinitとの互換性を高めるために、sysvinitserviceやsysvinitなどの実行可能ファイル用のラッパーも提供しています。chkconfig

systemdで定義されているサービスを確認するにはsystemctl(すべてのユニットファイルを表示する)、systemctl list-units(メモリ内のアクティブなユニットを表示)などのコマンドを使用するか、systemdにパスラッパーが存在するため、レガシー初期化サービスのいずれかでこれらのコマンドを使用できます。systemctl status service

答え2

これは実行中のサービスではなく実行可能なスクリプトです。

関連情報