[root@xxw fpm]# cat php-fpm
#! /bin/sh
php_fpm_BIN=/usr/local/php5/bin/php-cgi
php_fpm_CONF=/usr/local/php5/etc/php-fpm.conf
php_fpm_PID=/usr/local/php5/logs/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"
wait_for_pid () {
try=0
while test $try -lt 35 ; do
case "$1" in
'created')
if [ -f "$2" ] ; then
try=''
break
fi
;;
'removed')
if [ ! -f "$2" ] ; then
try=''
break
fi
;;
esac
echo -n .
try=`expr $try + 1`
sleep 1
done
}
case "$1" in
start)
echo -n "Starting php_fpm "
$php_fpm_BIN --fpm $php_opts
if [ "$?" != 0 ] ; then #检测命令执行结果返回是否为0来判断是否启动
echo " failed"
exit 1
fi
wait_for_pid created $php_fpm_PID
if [ -n "$try" ] ; then #检测进程号来判断
echo " failed"
exit 1
else
echo " done"
fi
;;
stop)
echo -n "Shutting down php_fpm "
if [ ! -r $php_fpm_PID ] ; then #先检测进程号
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -TERM `cat $php_fpm_PID` #杀死进程号
wait_for_pid removed $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
quit)
echo -n "Gracefully shutting down php_fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -QUIT `cat $php_fpm_PID` #执行kill -QUIT pid
wait_for_pid removed $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
restart)
$0 stop
$0 start
;;
reload)
echo -n "Reload service php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -USR2 `cat $php_fpm_PID` #重新加载选项
echo " done"
;;
logrotate)
echo -n "Re-opening php-fpm log file "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -USR1 `cat $php_fpm_PID`
echo " done"
;;
*)
echo "Usage: $0 {start|stop|quit|restart|reload|logrotate}"
exit 1
;;
esac