home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / etc / init.d / klogd < prev    next >
Encoding:
Text File  |  2006-07-29  |  1.9 KB  |  93 lines

  1. #! /bin/sh
  2. # /etc/init.d/klogd: start the kernel log daemon.
  3.  
  4. PATH=/bin:/usr/bin:/sbin:/usr/sbin
  5.  
  6. pidfile=/var/run/klogd/klogd.pid
  7. kmsgpipe=/var/run/klogd/kmsg
  8. kmsgpidfile=/var/run/klogd/kmsgpipe.pid
  9. binpath=/sbin/klogd
  10.  
  11. test -f $binpath || exit 0
  12. . /lib/lsb/init-functions
  13.  
  14. #  Use KLOGD="-k /boot/System.map-$(uname -r)" to specify System.map
  15. #
  16. KLOGD="-P $kmsgpipe"
  17.  
  18. test ! -r /etc/default/klogd || . /etc/default/klogd
  19.  
  20. running()
  21. {
  22.     # No pidfile, probably no daemon present
  23.     #
  24.     if [ ! -f $pidfile ]
  25.     then
  26.     return 1
  27.     fi
  28.  
  29.     pid=`cat $pidfile`
  30.  
  31.     # No pid, probably no daemon present
  32.     #
  33.     if [ -z "$pid" ]
  34.     then
  35.     return 1
  36.     fi
  37.  
  38.     if [ ! -d /proc/$pid ]
  39.     then
  40.     return 1
  41.     fi
  42.  
  43.     cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1`
  44.  
  45.     # No syslogd?
  46.     #
  47.     if [ "$cmd" != "$binpath" ]
  48.     then
  49.     return 1
  50.     fi
  51.  
  52.     return 0
  53. }
  54.  
  55. case "$1" in
  56.   start)
  57.     log_begin_msg "Starting kernel log..."
  58.  
  59.     # create klog-writeable pid and fifo directory
  60.     mkdir -p /var/run/klogd
  61.     chown klog:klog /var/run/klogd
  62.     mkfifo -m 700 $kmsgpipe
  63.     chown klog:klog $kmsgpipe
  64.  
  65.     # shovel /proc/kmsg to pipe readable by klogd user
  66.     start-stop-daemon --start --pidfile $kmsgpidfile --exec /bin/dd -b -m -- bs=1 if=/proc/kmsg of=$kmsgpipe
  67.  
  68.     # start klogd as non-root with reading from kmsgpipe
  69.     start-stop-daemon --start --quiet --chuid klog --exec $binpath -- $KLOGD
  70.     log_end_msg $?
  71.     ;;
  72.   stop)
  73.     log_begin_msg "Stopping kernel log..."
  74.     start-stop-daemon --stop --retry TERM/1/TERM/1/TERM/4/KILL --quiet --oknodo --exec $binpath --pidfile $pidfile
  75.  
  76.     # stop kmsgpipe
  77.     start-stop-daemon --stop --quiet --oknodo --pidfile $kmsgpidfile
  78.     rm -f $kmsgpidfile $kmsgpipe
  79.  
  80.     log_end_msg $?
  81.     ;;
  82.   restart|force-reload)
  83.     $0 stop
  84.     sleep 1
  85.     $0 start
  86.     ;;
  87.   *)
  88.     log_success_msg "Usage: /etc/init.d/klogd {start|stop|restart|force-reload}"
  89.     exit 1
  90. esac
  91.  
  92. exit 0
  93.