誰が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が示す場合は、.service
systemdによって開始された可能性があります。 (おそらく不明な)プロセスを見つけることができれば名前むしろsystemd-cgls
覚えやすいです。これは、systemctl status foo
foo.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
。