Files
NetworkManager/initscript/Slackware/rc.networkmanager.in
Robby Workman 2b9392950e slackware: add short sleep to initscript during service restart
The restart() function almost never works here - perhaps some part
of NM takes a bit too long to stop() and then blocks the start()
operation - but "sleep 2" between them makes everything fine.
2011-01-11 13:48:48 -06:00

93 lines
1.6 KiB
Bash

#!/bin/sh
#
# NetworkManager: NetworkManager daemon
#
# description: This is a daemon for automatically switching network \
# connections to the best available connection. \
#
# processname: NetworkManager
# pidfile: /var/run/NetworkManager.pid
#
prefix=@prefix@
exec_prefix=@prefix@
sbindir=@sbindir@
NETWORKMANAGER_BIN=${sbindir}/NetworkManager
# Sanity checks.
[ -x $NETWORKMANAGER_BIN ] || exit 0
PIDFILE=/var/run/NetworkManager.pid
nm_start()
{
if [ "`pgrep dbus-daemon`" = "" ]; then
echo "D-BUS must be running to start NetworkManager"
return
fi
# Just in case the pidfile is still there, we may need to nuke it.
if [ -e "$PIDFILE" ]; then
rm -f $PIDFILE
fi
echo "Starting NetworkManager daemon: $NETWORKMANAGER_BIN"
$NETWORKMANAGER_BIN
}
nm_status()
{
local pidlist=`cat $PIDFILE 2>/dev/null`
if [ -z "$pidlist" ]; then
return 1
fi
local command=`ps -p $pidlist -o comm=`
if [ "$command" != 'NetworkManager' ]; then
return 1
fi
}
nm_stop()
{
echo -en "Stopping NetworkManager: "
local pidlist=`cat $PIDFILE 2>/dev/null`
if [ ! -z "$pidlist" ]; then
kill $pidlist &>/dev/null
rm -f $PIDFILE &>/dev/null
fi
echo "stopped";
}
nm_restart()
{
nm_stop
sleep 2
nm_start
}
case "$1" in
'start')
if ( ! nm_status ); then
nm_start
else
echo "NetworkManager is already running (will not start it twice)."
fi
;;
'stop')
nm_stop
;;
'restart')
nm_restart
;;
'status')
if ( nm_status ); then
echo "NetworkManager is currently running"
else
echo "NetworkManager is not running."
fi
;;
*)
echo "usage $0 start|stop|status|restart"
esac