私がするとき
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.service
ExecStart=
/etc/init.d/avahi-daemon start
一部のディストリビューションでは、sysvinitとの互換性を高めるために、sysvinitservice
やsysvinitなどの実行可能ファイル用のラッパーも提供しています。chkconfig
systemdで定義されているサービスを確認するにはsystemctl
(すべてのユニットファイルを表示する)、systemctl list-units
(メモリ内のアクティブなユニットを表示)などのコマンドを使用するか、systemdにパスラッパーが存在するため、レガシー初期化サービスのいずれかでこれらのコマンドを使用できます。systemctl status service
答え2
これは実行中のサービスではなく実行可能なスクリプトです。