增加了udp端口69的占用判定;
#!/bin/bash
#description:tftpd
#chkconfig: 2345 20 81
set -e ##及时返回错误
EXEC_PATH=/software/tftp-1.0/
EXEC=tftpd
DAEMON=/software/tftp-1.0/tftpd
PID_FILE=/var/run/tftpd.pid
#. /etc/rc.d/init.d/functions
if [ ! -x $EXEC_PATH/$EXEC ] ; then
echo "ERROR: $DAEMON not found"
exit 1
fi
stop()
{
echo "Stoping $EXEC ..."
ps aux | grep "$DAEMON" | kill -9 `awk '{print $2}'` >/dev/null 2>&1
rm -f $PID_FILE
# usleep 100
echo "Shutting down $EXEC: [ OK ]"
status
}
status()
{
PID=`ps aux | grep "$DAEMON" |grep -v grep | awk '{print $2}'` # grep -v grep 是消除包含grep,即自身,最后一个进程。
#echo $PID
if (("$PID")) ; then #判断$PID为真,则tftpd启动
echo "tftpd start/running, process $PID"
else
echo "tftpd stop/waiting"
fi
}
start()
{
PID=`ps aux | grep "$DAEMON" |grep -v grep | awk '{print $2}'` # grep -v grep 是消除包含grep,即自身,最后一个进程。
po=`netstat -aup | grep tftp | awk '{print $1}'`
udp=udp
#echo "po =$po"
if (("$PID")) ; then #判断$PID为真,则tftpd启动
echo "tftpd is already running: process id = $PID"
elif [ "$po" = "$udp" ] ; then #字符串比较 等号前后 空格
# echo $udp
echo -e "\033[31m Starting tftpd: [ faild ]\033[0m"
echo "udp 69 port already be used."
else
echo "Starting $EXEC ..."
# PORT=`netstat -an | grep 0.0.0.0:69`
# if [ ! -n "$PORT" ] ; then
#echo "端口被占用"
$DAEMON > /dev/null &
pidof $EXEC > $PID_FILE
# usleep 100
echo "Starting $EXEC: [ OK ]"
# else
# echo "端口69被占用"
# $DAEMON > /dev/null &
# pidof $EXEC > $PID_FILE
# usleep 100
#echo "Starting $EXEC: [ OK ]"
# fi
status
fi
}
restart()
{
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
# status -p $PID_FILE $DAEMON
status
;;
*)
echo "Usage: service $EXEC {start|stop|restart|status}"
exit 1
esac
exit $?