blob: 73424840ba35caf4ed290aca6b3b2b747f7bf066 [file] [log] [blame]
#! /bin/sh
# /etc/init.d/sysklogd: start the system log daemon.
### BEGIN INIT INFO
# Provides: sysklogd
# Required-Start: $remote_fs $time
# Required-Stop: $remote_fs $time
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: System logger
### END INIT INFO
# Source function library.
. /etc/init.d/functions
PATH=/bin:/usr/bin:/sbin:/usr/sbin
pidfile_syslogd=/var/run/syslogd.pid
pidfile_klogd=/var/run/klogd.pid
binpath_syslogd=/sbin/syslogd
binpath_klogd=/sbin/klogd
test -x $binpath || exit 0
test ! -r /etc/default/syslogd || . /etc/default/syslogd
create_xconsole()
{
# Only proceed if /dev/xconsole is used at all
if ! grep -q '^[^#].*/dev/xconsole' /etc/syslog.conf
then
return
fi
if [ ! -e /dev/xconsole ]; then
mknod -m 640 /dev/xconsole p
else
chmod 0640 /dev/xconsole
fi
chown root:adm /dev/xconsole
test ! -x /sbin/restorecon || /sbin/restorecon /dev/xconsole
}
log_begin_msg () {
echo -n $1
}
log_end_msg () {
echo $1
}
log_success_msg () {
echo $1
}
running()
{
# No pidfile, probably no daemon present
#
if [ ! -f $pidfile ]
then
return 1
fi
pid=`cat $pidfile_syslogd`
# No pid, probably no daemon present
#
if [ -z "$pid" ]
then
return 1
fi
if [ ! -d /proc/$pid ]
then
return 1
fi
cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1`
# No syslogd?
#
if [ "$cmd" != "$binpath" ]
then
return 1
fi
return 0
}
waitpid ()
{
pid=$1
# Give pid a chance to exit before we restart with a 5s timeout in 1s intervals
if [ -z "$pid" ]; then
return
fi
timeout=5;
while [ $timeout -gt 0 ]
do
timeout=$(( $timeout-1 ))
kill -0 $pid 2> /dev/null || break
sleep 1
done
}
case "$1" in
start)
log_begin_msg "Starting system log daemon..."
create_xconsole
start-stop-daemon --start --quiet --pidfile $pidfile_syslogd --name syslogd --startas $binpath_syslogd -- $SYSLOGD
log_end_msg $?
log_begin_msg "Starting kernel log daemon..."
start-stop-daemon --start --quiet --pidfile $pidfile_klogd --name klogd --startas $binpath_klogd -- $KLOGD
log_end_msg $?
;;
stop)
log_begin_msg "Stopping system log daemon..."
start-stop-daemon --stop --quiet --pidfile $pidfile_syslogd --name syslogd
log_end_msg $?
log_begin_msg "Stopping kernel log daemon..."
start-stop-daemon --stop --quiet --retry 3 --exec $binpath_klogd --pidfile $pidfile_klogd
log_end_msg $?
;;
reload|force-reload)
log_begin_msg "Reloading system log daemon..."
start-stop-daemon --stop --quiet --signal 1 --pidfile $pidfile_syslogd --name syslogd
log_end_msg $?
log_begin_msg "Reloading kernel log daemon..."
pid=`cat $pidfile_klogd 2> /dev/null`
start-stop-daemon --stop --quiet --retry 3 --exec $binpath_klogd --pidfile $pidfile_klogd
waitpid $pid
start-stop-daemon --start --quiet --pidfile $pidfile_klogd --name klogd --startas $binpath_klogd -- $KLOGD
log_end_msg $?
;;
restart)
log_begin_msg "Restarting system log daemon..."
pid=`cat $pidfile_syslogd 2> /dev/null`
start-stop-daemon --stop --retry 5 --quiet --pidfile $pidfile_syslogd --name syslogd
waitpid $pid
start-stop-daemon --start --quiet --pidfile $pidfile_syslogd --name syslogd --startas $binpath_syslogd -- $SYSLOGD
log_end_msg $?
log_begin_msg "Reloading kernel log daemon..."
pid=`cat $pidfile_klogd 2> /dev/null`
start-stop-daemon --stop --quiet --retry 3 --exec $binpath_klogd --pidfile $pidfile_klogd
waitpid $pid
start-stop-daemon --start --quiet --pidfile $pidfile_klogd --name klogd --startas $binpath_klogd -- $KLOGD
log_end_msg $?
;;
reload-or-restart)
if running
then
$0 reload
else
$0 start
fi
;;
status)
status syslogd
RETVAL=$?
status klogd
rval=$?
[ $RETVAL -eq 0 ] && exit $rval
exit $RETVAL
;;
*)
log_success_msg "Usage: /etc/init.d/sysklogd {start|stop|reload|restart|force-reload|reload-or-restart|status}"
exit 1
esac
exit 0