Opened 4 years ago

Last modified 4 years ago

#60534 new enhancement

Print status information for a daemon

Reported by: FranklinYu (Franklin Yu) Owned by:
Priority: Normal Milestone:
Component: base Version: 2.6.2
Keywords: Cc:
Port:

Description (last modified by FranklinYu (Franklin Yu))

I would like a new action print that does something similar to systemctl status in systemd. I’m not sure whether everything is available though; I guess we can parse the output of launchctl print and get some information.

The PID from launchctl print doesn’t look like the real daemon (at least it’s the case for Apache HTTP Server), but the daemondo process instead. The real PID locates at

/opt/local/var/run/apache2/httpd.pid

for Apache. I’m not sure whether it’s equivalent to show the status (running/error/not-loaded) of the daemondo process instead of the real one; showing daemondo process sounds more generic.

Change History (5)

comment:1 Changed 4 years ago by FranklinYu (Franklin Yu)

I might work on this if I can find time. Will refer to the load action

https://github.com/macports/macports-base/blob/v2.6.2/src/port1.0/portload.tcl

for implementation.

comment:2 Changed 4 years ago by FranklinYu (Franklin Yu)

Description: modified (diff)

comment:3 in reply to:  description Changed 4 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to FranklinYu:

something similar to systemctl status in systemd

For those of us who only use macOS which does not have systemd, what does systemctl status do?

comment:4 Changed 4 years ago by kencu (Ken)

● UbuntuMacBook
    State: running
     Jobs: 0 queued
   Failed: 0 units
    Since: Thu 2020-05-21 19:30:40 PDT; 23h ago
   CGroup: /
           ├─user.slice 
           │ ├─user-1000.slice 
           │ │ ├─user@1000.service 
           │ │ │ ├─gsd-xsettings.service 
           │ │ │ │ └─2816 /usr/libexec/gsd-xsettings
           │ │ │ ├─gvfs-goa-volume-monitor.service 
           │ │ │ │ └─2457 /usr/libexec/gvfs-goa-volume-monitor
           │ │ │ ├─gsd-power.service 
           │ │ │ │ └─2787 /usr/libexec/gsd-power
           │ │ │ ├─xdg-permission-store.service 
           │ │ │ │ └─2661 /usr/libexec/xdg-permission-store
           │ │ │ ├─xdg-document-portal.service 
           │ │ │ │ └─2657 /usr/libexec/xdg-document-portal
           │ │ │ ├─xdg-desktop-portal.service 
           │ │ │ │ └─2648 /usr/libexec/xdg-desktop-portal
           │ │ │ ├─gsd-sound.service 
           │ │ │ │ └─2803 /usr/libexec/gsd-sound
           │ │ │ ├─gsd-rfkill.service 
           │ │ │ │ └─2789 /usr/libexec/gsd-rfkill
           │ │ │ ├─gsd-usb-protection.service 
           │ │ │ │ └─2806 /usr/libexec/gsd-usb-protection
           │ │ │ ├─gsd-print-notifications.service 
           │ │ │ │ ├─2788 /usr/libexec/gsd-print-notifications
           │ │ │ │ └─2900 /usr/libexec/gsd-printer
           │ │ │ ├─evolution-calendar-factory.service 
           │ │ │ │ └─2754 /usr/libexec/evolution-calendar-factory
           │ │ │ ├─gsd-a11y-settings.service 
           │ │ │ │ └─2770 /usr/libexec/gsd-a11y-settings
           │ │ │ ├─gsd-wwan.service 
           │ │ │ │ └─2812 /usr/libexec/gsd-wwan
           │ │ │ ├─pulseaudio.service 
           │ │ │ │ └─2390 /usr/bin/pulseaudio --daemonize=no --log-target=journal
           │ │ │ ├─gsd-screensaver-proxy.service 
           │ │ │ │ └─2790 /usr/libexec/gsd-screensaver-proxy
           │ │ │ ├─gsd-media-keys.service 
           │ │ │ │ └─2785 /usr/libexec/gsd-media-keys
           │ │ │ ├─gvfs-daemon.service 
           │ │ │ │ ├─2403 /usr/libexec/gvfsd
           │ │ │ │ ├─2408 /usr/libexec/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
           │ │ │ │ └─2756 /usr/libexec/gvfsd-trash --spawner :1.2 /org/gtk/gvfs/exec_spaw/0
           │ │ │ ├─evolution-source-registry.service 
           │ │ │ │ └─2734 /usr/libexec/evolution-source-registry
           │ │ │ ├─gvfs-udisks2-volume-monitor.service 
           │ │ │ │ └─2409 /usr/libexec/gvfs-udisks2-volume-monitor
           │ │ │ ├─gnome-launched-firefox.desktop-8482.scope 
           │ │ │ │ ├─8482 /usr/lib/firefox/firefox -new-window
           │ │ │ │ ├─8536 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 224306 -parentBuildID 20200507114007 -appdir /usr/lib/firefox/browser 8482 true tab
           │ │ │ │ ├─8601 /usr/lib/firefox/firefox -contentproc -childID 3 -isForBrowser -prefsLen 6639 -prefMapSize 224306 -parentBuildID 20200507114007 -appdir /usr/lib/firefox/browser 8482 true tab
           │ │ │ │ └─8660 /usr/lib/firefox/firefox -contentproc -childID 4 -isForBrowser -prefsLen 7486 -prefMapSize 224306 -parentBuildID 20200507114007 -appdir /usr/lib/firefox/browser 8482 true tab
           │ │ │ ├─gsd-sharing.service 
           │ │ │ │ └─2794 /usr/libexec/gsd-sharing
           │ │ │ ├─init.scope 
           │ │ │ │ ├─2374 /lib/systemd/systemd --user
           │ │ │ │ └─2376 (sd-pam)
           │ │ │ ├─gsd-smartcard.service 
           │ │ │ │ └─2798 /usr/libexec/gsd-smartcard
           │ │ │ ├─gsd-housekeeping.service 
           │ │ │ │ └─2779 /usr/libexec/gsd-housekeeping
           │ │ │ ├─gsd-wacom.service 
           │ │ │ │ └─2809 /usr/libexec/gsd-wacom
           │ │ │ ├─gvfs-gphoto2-volume-monitor.service 
           │ │ │ │ └─2453 /usr/libexec/gvfs-gphoto2-volume-monitor
           │ │ │ ├─gnome\x2dsession\x2dmanager.slice 
           │ │ │ │ └─gnome-session-manager@ubuntu.service 
           │ │ │ │   ├─2652 /usr/libexec/gnome-session-binary --systemd-service --session=ubuntu
           │ │ │ │   ├─2826 /usr/bin/python3 /usr/bin/blueman-applet
           │ │ │ │   ├─2842 /usr/libexec/evolution-data-server/evolution-alarm-notify
           │ │ │ │   ├─2843 /usr/libexec/gsd-disk-utility-notify
           │ │ │ │   ├─2910 /snap/snap-store/454/usr/bin/snap-store --gapplication-service
           │ │ │ │   ├─3016 /usr/bin/python3 /usr/bin/blueman-tray
           │ │ │ │   └─3798 update-notifier
           │ │ │ ├─gnome-session-monitor.service 
           │ │ │ │ └─2646 /usr/libexec/gnome-session-ctl --monitor
           │ │ │ ├─gsd-datetime.service 
           │ │ │ │ └─2773 /usr/libexec/gsd-datetime
           │ │ │ ├─xdg-desktop-portal-gtk.service 
           │ │ │ │ └─2673 /usr/libexec/xdg-desktop-portal-gtk
           │ │ │ ├─obex.service 
           │ │ │ │ └─3031 /usr/lib/bluetooth/obexd
           │ │ │ ├─gnome-shell-x11.service 
           │ │ │ │ └─2689 /usr/bin/gnome-shell
           │ │ │ ├─at-spi-dbus-bus.service 
           │ │ │ │ ├─2618 /usr/libexec/at-spi-bus-launcher
           │ │ │ │ ├─2623 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
           │ │ │ │ └─2637 /usr/libexec/at-spi2-registryd --use-gnome-session
           │ │ │ ├─apps.slice 
           │ │ │ │ └─apps-org.gnome.Terminal.slice 
           │ │ │ │   ├─vte-spawn-41603486-8e1c-4208-a44c-cd2c4870a9aa.scope 
           │ │ │ │   │ ├─8785 bash
           │ │ │ │   │ └─8805 systemctl status
           │ │ │ │   ├─gnome-terminal-server.service 
           │ │ │ │   │ └─8774 /usr/libexec/gnome-terminal-server
           │ │ │ │   └─vte-spawn-06abff5b-3ca2-432c-aaeb-db96f6eaeda0.scope 
           │ │ │ │     └─3825 syndaemon -i 2 -t -d
           │ │ │ ├─gvfs-metadata.service 
           │ │ │ │ └─3795 /usr/libexec/gvfsd-metadata
           │ │ │ ├─dbus.service 
           │ │ │ │ ├─2399 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
           │ │ │ │ ├─2461 /usr/libexec/goa-daemon
           │ │ │ │ ├─2479 /usr/libexec/goa-identity-service
           │ │ │ │ ├─2607 /usr/libexec/ibus-portal
           │ │ │ │ ├─2617 /usr/bin/gnome-keyring-daemon --start --foreground --components=secrets
           │ │ │ │ ├─2684 /usr/libexec/dconf-service
           │ │ │ │ ├─2730 /usr/libexec/gnome-shell-calendar-server
           │ │ │ │ └─2746 /usr/bin/gjs /usr/share/gnome-shell/org.gnome.Shell.Notifications
           │ │ │ ├─evolution-addressbook-factory.service 
           │ │ │ │ └─2850 /usr/libexec/evolution-addressbook-factory
           │ │ │ ├─tracker-miner-fs.service 
           │ │ │ │ └─2392 /usr/libexec/tracker-miner-fs
           │ │ │ ├─gvfs-mtp-volume-monitor.service 
           │ │ │ │ └─2449 /usr/libexec/gvfs-mtp-volume-monitor
           │ │ │ ├─gsd-keyboard.service 
           │ │ │ │ └─2782 /usr/libexec/gsd-keyboard
           │ │ │ ├─gsd-color.service 
           │ │ │ │ └─2771 /usr/libexec/gsd-color
           │ │ │ └─gvfs-afc-volume-monitor.service 
           │ │ │   └─2491 /usr/libexec/gvfs-afc-volume-monitor
           │ │ └─session-2.scope 
           │ │   ├─2357 gdm-session-worker [pam/gdm-password]
           │ │   ├─2395 /usr/bin/gnome-keyring-daemon --daemonize --login
           │ │   ├─2431 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_MODE=ubuntu /usr/bin/gnome-session --systemd --session=ubuntu
           │ │   ├─2433 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
           │ │   ├─2442 /usr/lib/xserver-xorg-video-intel/xf86-video-intel-backlight-helper intel_backlight
           │ │   ├─2466 /usr/libexec/gnome-session-binary --systemd --systemd --session=ubuntu
           │ │   ├─2579 /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_SHELL_SESSION_MODE=ubuntu /usr/bin/gnome-session --systemd --session=ubuntu
           │ │   ├─2596 /usr/bin/ibus-daemon --daemonize --xim
           │ │   ├─2601 /usr/libexec/ibus-memconf
           │ │   ├─2602 /usr/libexec/ibus-ui-gtk3
           │ │   ├─2603 /usr/libexec/ibus-extension-gtk3
           │ │   ├─2605 /usr/libexec/ibus-x11 --kill-daemon
           │ │   └─2713 /usr/libexec/ibus-engine-simple
           │ └─user-121.slice 
           │   ├─user@121.service 
           │   │ ├─gsd-xsettings.service 
           │   │ │ └─2063 /usr/libexec/gsd-xsettings
           │   │ ├─gsd-power.service 
           │   │ │ └─2041 /usr/libexec/gsd-power
           │   │ ├─xdg-permission-store.service 
           │   │ │ └─1960 /usr/libexec/xdg-permission-store
           │   │ ├─gnome-keyring-ssh.service 
           │   │ │ └─1666 /usr/bin/gnome-keyring-daemon --start --components ssh
           │   │ ├─gsd-sound.service 
           │   │ │ └─2053 /usr/libexec/gsd-sound
           │   │ ├─gsd-rfkill.service 
           │   │ │ └─2048 /usr/libexec/gsd-rfkill
           │   │ ├─gsd-usb-protection.service 
           │   │ │ └─2056 /usr/libexec/gsd-usb-protection
           │   │ ├─gsd-print-notifications.service 
           │   │ │ ├─2042 /usr/libexec/gsd-print-notifications
           │   │ │ └─2131 /usr/libexec/gsd-printer
           │   │ ├─gsd-a11y-settings.service 
           │   │ │ └─2033 /usr/libexec/gsd-a11y-settings
           │   │ ├─gsd-wwan.service 
           │   │ │ └─2058 /usr/libexec/gsd-wwan
           │   │ ├─pulseaudio.service 
           │   │ │ └─1412 /usr/bin/pulseaudio --daemonize=no --log-target=journal
           │   │ ├─gsd-media-keys.service 
           │   │ │ └─2038 /usr/libexec/gsd-media-keys
           │   │ ├─init.scope 
           │   │ │ ├─1389 /lib/systemd/systemd --user
           │   │ │ └─1392 (sd-pam)
           │   │ ├─gsd-smartcard.service 
           │   │ │ └─2050 /usr/libexec/gsd-smartcard
           │   │ ├─gsd-wacom.service 
           │   │ │ └─2057 /usr/libexec/gsd-wacom
           │   │ ├─gnome\x2dsession\x2dmanager.slice 
           │   │ │ └─gnome-session-manager@gnome-login.service 
           │   │ │   └─1684 /usr/libexec/gnome-session-binary --systemd-service --session=gnome-login
           │   │ ├─gnome-session-monitor.service 
           │   │ │ └─1663 /usr/libexec/gnome-session-ctl --monitor
           │   │ ├─gnome-shell-x11.service 
           │   │ │ ├─1728 /usr/bin/gnome-shell
           │   │ │ ├─1905 ibus-daemon --panel disable --xim
           │   │ │ ├─1912 /usr/libexec/ibus-memconf
           │   │ │ ├─1915 /usr/libexec/ibus-x11 --kill-daemon
           │   │ │ └─2074 /usr/libexec/ibus-engine-simple
           │   │ ├─at-spi-dbus-bus.service 
           │   │ │ ├─1611 /usr/libexec/at-spi-bus-launcher
           │   │ │ ├─1616 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
           │   │ │ └─1934 /usr/libexec/at-spi2-registryd --use-gnome-session
           │   │ ├─dbus.service 
           │   │ │ ├─1536 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
           │   │ │ ├─1918 /usr/libexec/ibus-portal
           │   │ │ ├─1942 /usr/libexec/dconf-service
           │   │ │ └─2025 /usr/bin/gjs /usr/share/gnome-shell/org.gnome.Shell.Notifications
           │   │ ├─tracker-miner-fs.service 
           │   │ │ └─1771 /usr/libexec/tracker-miner-fs
           │   │ ├─gsd-keyboard.service 
           │   │ │ └─2037 /usr/libexec/gsd-keyboard
           │   │ └─gsd-color.service 
           │   │   └─2036 /usr/libexec/gsd-color
           │   └─session-c2.scope 
           │     ├─1533 gdm-session-worker [pam/gdm-launch-environment]
           │     ├─1552 /usr/lib/gdm3/gdm-x-session gnome-session --autostart /usr/share/gdm/greeter/autostart
           │     ├─1555 /usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/121/gdm/Xauthority -background none -noreset -keeptty -verbose 3
           │     └─1597 /usr/libexec/gnome-session-binary --systemd --autostart /usr/share/gdm/greeter/autostart
           ├─init.scope 
           │ └─1 /sbin/init splash
           └─system.slice 
             ├─irqbalance.service 
             │ └─888 /usr/sbin/irqbalance --foreground
             ├─systemd-udevd.service 
             │ └─398 /lib/systemd/systemd-udevd
             ├─whoopsie.service 
             │ └─1560 /usr/bin/whoopsie -f
             ├─cron.service 
             │ └─866 /usr/sbin/cron -f
             ├─polkit.service 
             │ └─896 /usr/lib/policykit-1/polkitd --no-debug
             ├─networkd-dispatcher.service 
             │ └─889 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
             ├─rtkit-daemon.service 
             │ └─1541 /usr/libexec/rtkit-daemon
             ├─bluetooth.service 
             │ └─1958 /usr/lib/bluetooth/bluetoothd
             ├─accounts-daemon.service 
             │ └─851 /usr/lib/accountsservice/accounts-daemon
             ├─wpa_supplicant.service 
             │ └─915 /sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
             ├─ModemManager.service 
             │ └─992 /usr/sbin/ModemManager --filter-policy=strict
             ├─snap.plexmediaserver.plexmediaserver.service 
             │ ├─ 970 /bin/bash /snap/plexmediaserver/90/wrapper.sh
             │ ├─1126 /bin/bash /snap/plexmediaserver/90/wrapper.sh
             │ ├─1127 ./Plex Media Server
             │ ├─1254 Plex Plug-in [com.plexapp.system] /snap/plexmediaserver/90/Resources/Plug-ins-e3c1f7bcd/Framework.bundle/Contents/Resources/Versions/2/Python/bootstrap.py --server-version 1.19.3.2843-e3c1f7bcd /snap/plexmediaserver/90/Resources/Plug-ins-e3c1f7bcd/System.bundle
             │ └─1720 /snap/plexmediaserver/90/Plex Tuner Service /snap/plexmediaserver/90/Resources/Tuner/Private /snap/plexmediaserver/90/Resources/Tuner/Shared 1.19.3.2843-e3c1f7bcd 32600 /waitmutex
             ├─systemd-journald.service 
             │ └─363 /lib/systemd/systemd-journald
             ├─unattended-upgrades.service 
             │ └─1131 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
             ├─fwupd.service 
             │ └─3054 /usr/libexec/fwupd/fwupd
             ├─colord.service 
             │ └─1885 /usr/libexec/colord
             ├─NetworkManager.service 
             │ └─870 /usr/sbin/NetworkManager --no-daemon
             ├─snapd.service 
             │ └─904 /usr/lib/snapd/snapd
             ├─gdm.service 
             │ └─1366 /usr/sbin/gdm3
             ├─switcheroo-control.service 
             │ └─905 /usr/libexec/switcheroo-control
             ├─rsyslog.service 
             │ └─901 /usr/sbin/rsyslogd -n -iNONE
             ├─snap.canonical-livepatch.canonical-livepatchd.service 
             │ └─969 /snap/canonical-livepatch/95/canonical-livepatchd
             ├─kerneloops.service 
             │ ├─1567 /usr/sbin/kerneloops --test
             │ └─1569 /usr/sbin/kerneloops
             ├─cups-browsed.service 
             │ └─5372 /usr/sbin/cups-browsed
             ├─cups.service 
             │ ├─5370 /usr/sbin/cupsd -l
             │ └─5892 /usr/lib/cups/notifier/dbus dbus://
             ├─upower.service 
             │ └─1527 /usr/lib/upower/upowerd
             ├─systemd-resolved.service 
             │ └─661 /lib/systemd/systemd-resolved
             ├─udisks2.service 
             │ └─914 /usr/lib/udisks2/udisksd
             ├─acpid.service 
             │ └─852 /usr/sbin/acpid
             ├─dbus.service 
             │ └─868 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
             ├─systemd-timesyncd.service 
             │ └─662 /lib/systemd/systemd-timesyncd
             ├─avahi-daemon.service 
             │ ├─857 avahi-daemon: running [UbuntuMacBook.local]
             │ └─917 avahi-daemon: chroot helper
             └─systemd-logind.service 
               └─912 /lib/systemd/systemd-logind

comment:5 Changed 4 years ago by FranklinYu (Franklin Yu)

Thanks Ken, this is very helpful. I should have included an example myself. I actually wanted the usage that prints a single service (a.k.a. "job" in launchctl term); for example, systemctl status ssh gives

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-02-09 19:30:14 UTC; 3 months 11 days ago
     Docs: man:sshd(8)
           man:sshd_config(5)
  Process: 816 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
 Main PID: 828 (sshd)
    Tasks: 1 (limit: 663)
   Memory: 6.2M
   CGroup: /system.slice/ssh.service
           └─828 /usr/sbin/sshd -D
Note: See TracTickets for help on using tickets.