Linuxサービスは誰が制御しますか?

Linuxサービスは誰が制御しますか?

誰がLinuxサービスを制御しているかをすばやく見つける方法は?

initd、upstart、systemd、またはSupervisordがいくつかのサービスを制御していることを確認するために/ etcを見て疲れました。

ベストアンサー1

どの初期化がわからない場合は、推測から始めることができますps | grep -E "systemd|upstart"。 (既存の新生システムにはいくつかの輝くシステムが存在する可能性がありますが、その逆は本当だとは思いません)。監督官なども確認できます。

Google検索initdが私に言ったので、/etc/init.dそれはどういう意味かと思います...申し訳ありませんが、sysV init-scriptsを検出するつもりはありませんでしたその他/ etcを見るのではなく(sysvinitに閉じ込められている場合は、おそらくまたサービスが実際にsysvinitで実行されていることを確認したい/etc/init.d/foo statusか、service foo status確認したいと思います。残念ながら、サービスが実行されているかどうかはわかりません。両方sysvinitとスーパーバイザー)。

initctl listスタートアップではpidが表示されるので就職が簡単だと思います。したがって、存在する場合、これはupstartジョブまたは以前のバージョンとの互換性の下で実行されるsysV initスクリプトです(違いを検出するには上記を参照)。

systemdでは、次のように指定されたpidを確認できます。psのcgroupsフィールド、以下を参照してください。 cgroupが示す場合は、.servicesystemdによって開始された可能性があります。 (おそらく不明な)プロセスを見つけることができれば名前むしろsystemd-cgls覚えやすいです。これは、systemctl status foofoo.serviceのsysV init-scriptを検出するのに十分な情報を提供できると思います。

$ ps xawf -eo pid,user,cgroup,args
  PID USER     CGROUP                              COMMAND
    2 root     -                                   [kthreadd]
    3 root     -                                    \_ [ksoftirqd/0]
[...]
 4281 root     -                                    \_ [flush-8:0]
    1 root     name=systemd:/systemd-1             /sbin/init
  455 root     name=systemd:/systemd-1/sysinit.service /sbin/udevd -d
28188 root     name=systemd:/systemd-1/sysinit.service  \_ /sbin/udevd -d
28191 root     name=systemd:/systemd-1/sysinit.service  \_ /sbin/udevd -d
 1096 dbus     name=systemd:/systemd-1/dbus.service /bin/dbus-daemon --system --address=systemd: --nofork --systemd-activation
[...]

監督用supervisord status

おすすめ記事