Differences between revisions 14 and 15
Revision 14 as of 2009-05-04 20:52:36
Size: 7083
Editor: ?PeterEisentraut
Comment: remove portmap
Revision 15 as of 2009-09-16 20:58:14
Size: 7216
Editor: ?PeterEisentraut
Comment: Added some brainstorming items
Deletions are marked like this. Additions are marked like this.
Line 16: Line 16:
 * Also check init scripts for incorrect alignment of restart/force-reload/reload.
 * Try to make status action run as non-root.

Init Script Status Support

This page tracks the currently informal and unofficial release goal to have all init scripts in Debian support the "status" action. Peter Eisentraut <petere@debian.org> is the initiator.

Purpose

Every init script shipped by a package in Debian (that is, a file in /etc/init.d/) should support the "status" action in an LSB-conforming and meaningful way. This information is useful for administrators and is frequently requested by users coming from other Linux distributions.

Principles

  • Align all behaviors with LSB where possible.
  • Incorporate the behavior into the Debian policy.
  • Define and document best practices where no existing standard or policy exists.

Vision

I would like to see tools developed (or brought into Debian, as other Linux distributions surely already have these) that give me a list of the status of all services, thus giving me a quick overview over what's happening with the services on the system.

Brainstorming

  • Also check init scripts for incorrect alignment of restart/force-reload/reload.
  • Try to make status action run as non-root.

thoughts, ideas, questions ... add them here ...

Organizational

Statistics

Starting point approximately 22 April 2009:

  • 992 init scripts total
  • 239 support "status"
  • 510 use the LSB init functions
  • 303 use the LSB init functions but don't support "status"

(The latter two numbers are not terribly meanful except that they show that someone presumably did some editing on the init script in the last two years or so.)

References

Howto

An init script that does set -e (as recommended), already uses the LSB init functions and just starts exactly one daemon program can usually just do:

status)
    status_of_proc /usr/bin/foo foo
    ;;

If the base name of the PID file (without ".pid" extension) does not match the base name of the program, you have to specify the full PID file name explicitly:

status)
    status_of_proc /usr/bin/foo foo -p /var/run/foo/foo-server.pid
    ;;

If your init script doesn't set -e, then you can write instead:

status)
    status_of_proc /usr/bin/foo foo
    exit $?
    ;;

status_of_proc requires a run-time dependencies on lsb-base (>= 3.2-13).

Bug Tracking

I use the usertag initd-status-support with user petere@debian.org: bug list

Next Actions

Obviously, we can't fix all 753 deficient init scripts at once, so I have categorized and prioritized the work a bit. When you file a bug for a package (or find an existing bug) and usertag it appropriately, delete it from this list.

Packages I use personally:

  • binfmt-support
  • bluetooth
  • bootlogd
  • checkfs.sh
  • checkroot.sh
  • console-screen.sh
  • cryptdisks
  • cryptdisks-early
  • firehol
  • fuse
  • halt
  • hdparm
  • hostname.sh
  • hwclockfirst.sh
  • hwclock.sh
  • ifupdown
  • ifupdown-clean
  • keymap.sh
  • killprocs
  • kvm
  • lvm2
  • module-init-tools
  • mountall.sh
  • mountdevsubfs.sh
  • mountkernfs.sh
  • mountnfs.sh
  • mountoverflowtmp
  • mtab.sh
  • networking
  • openvpn
  • pcmciautils
  • procps
  • rc.local
  • reboot
  • rmnologin
  • sendsigs
  • single
  • sudo
  • udev
  • umountfs
  • umountnfs.sh
  • umountroot
  • urandom
  • wpa-ifupdown

Scripts without status using LSB init functions:

  • acpi-support
  • adtxenlvm
  • aiccu
  • ajaxterm
  • alsa-utils
  • ample
  • amule-daemon
  • anon-proxy
  • aoetools
  • apf-firewall
  • apmd
  • apt-cacher-ng
  • apt-proxy
  • autodir
  • autolog
  • avr-evtd
  • backuppc
  • bandwidthd
  • beid
  • binfmt-support
  • blootbot
  • bluemon
  • bootchart
  • bpalogin
  • brltty
  • buildbot
  • calendarserver
  • capiutils
  • caudium
  • cfengine2
  • checkfs-loop
  • chillispot
  • cipux-rpcd
  • citadel
  • conntrackd
  • console-screen.kbd.sh
  • console-setup
  • courier-authdaemon
  • courier-mlm
  • cpufreqd
  • cpufrequtils
  • cpushare
  • dansguardian
  • darkstat
  • dbeacon
  • dbmail
  • debpool
  • debtorrent-client
  • debtorrent-tracker
  • denyhosts
  • dhcdbd
  • dictd
  • dkimproxy
  • dns2tcp
  • docvert-converter
  • drac
  • dtc-stats-daemon
  • dtc-xen
  • eeepc-acpi-scripts
  • elida
  • etokend
  • etsrvd
  • fam
  • ferm
  • fetch-ldap-cert
  • fetchmail
  • ffproxy
  • firebird2.0-classic
  • firebird2.1-classic
  • freeradius
  • freevo_encodingserver
  • freevo_recordserver
  • freevo_rssserver
  • freevo_webserver
  • freevo_xserver
  • ftp-proxy
  • gammu-smsd
  • ganeti
  • geneweb
  • gpsd
  • gridengine-exec
  • gridengine-master
  • gwsetup
  • hdapsd
  • hddtemp
  • hostapd
  • hylafax
  • i8kbuttons
  • i8kmon
  • icecc
  • ike
  • imapproxy
  • incron
  • inetutils-inetd
  • inetutils-syslogd
  • iodined
  • ipkungfu
  • ipmievd
  • ircd-ratbox
  • isdnutils
  • jabberd14
  • jackd
  • kannel
  • kdm-gdmcompat
  • keepalived
  • kexec
  • kexec-load
  • keyboard-setup
  • klogd
  • knockd
  • krb5-admin-server
  • krb5-kdc
  • ld10k1
  • libpam-foreground
  • lighttpd
  • linuxlogo
  • lldpd
  • loadcpufreq
  • lprng
  • ltsp-client-core
  • ltsp-client-setup
  • ltsp-sirvecole
  • lwresd
  • mailman
  • mailscanner
  • mandos
  • mdadm
  • mdadm-raid
  • mediatomb
  • miredo
  • miredo-server
  • mixmaster
  • mon
  • monkey
  • monotone
  • mono-xsp
  • mono-xsp2
  • motion
  • mpd
  • mpdscribble
  • mpt-statusd
  • mrd6
  • multipath-tools
  • multipath-tools-boot
  • mumble-server
  • mumudvb
  • mwavem
  • mxallowd
  • mythtv-status
  • nagios-nrpe-server
  • netapplet
  • netperf
  • nfdump
  • nis
  • nodm
  • noip2
  • nsd3
  • nut
  • nvidia-glx
  • nvidia-glx-legacy-173xx
  • nvtv
  • openafs-fileserver
  • open-vm-tools
  • p910nd
  • pcscd
  • pdnsd
  • pdns-recursor
  • policycoreutils
  • powersaved
  • prayer
  • prayer-accountd
  • procps
  • proxsmtp
  • pulseaudio
  • puppet
  • puppetmaster
  • pyaimt
  • pyicqt
  • pyroman
  • quota
  • quotarpc
  • ratbox-services
  • rdnssd
  • readahead
  • readahead-desktop
  • rebuildd
  • rebuildd-httpd
  • rfs-server
  • rlinetd
  • root-system-proofd
  • root-system-rootd
  • root-system-xrootd
  • rplay
  • rwhod
  • samba4
  • samizdat
  • saslauthd
  • sbnc
  • sec
  • selinux-basics
  • sensord
  • shishi-kdc
  • silcd
  • single
  • sirvecole
  • sleepd
  • solid-pop3d
  • speech-dispatcher
  • spf-milter-python
  • splashy
  • squid3
  • sqwebmail
  • steam
  • stop-readahead
  • svgalib-bin
  • switchconf
  • sympa
  • sysfsutils
  • sysklogd
  • syslog-ng
  • sysstat
  • tidy-proxy
  • timidity
  • transmission-daemon
  • tremulous-server
  • tspc
  • uml-utilities
  • umountiscsi.sh
  • unbound
  • varnish
  • varnishlog
  • varnishncsa
  • vbesave
  • virtualbox-ose-guest-utils
  • vtun
  • webcit
  • wicd
  • wifi-radar
  • winkeydaemon
  • xdm
  • xend
  • xfstt
  • xinetd
  • yum-updatesd
  • zope2.10
  • zope3
  • zope-maildrophost