看了nginx和redis的shell启动脚本,发现服务的开启和关闭其实就是操作服务进程号,那么给php服务也写个shell脚本,也能实现service start 和 stop
进入Linux服务的初始化目录
[root@1 ]# cd /etc/init.d/
# 或者
[root@1 init.d]# cd /etc/rc.d/init.d/
创建phpfpmd进程脚本(进程控制脚本规范上默认都加后缀d)
vim phpfpmd
#!/bin/bash
# chkconfig: 2345 90 10
# description: php-fpm is web server
#服务在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10。
PHP_INI="/etc/php.ini"
PHP_FPM="/usr/local/php/sbin/php-fpm"
PHP_FPM_CONF="/usr/local/php/etc/php-fpm.conf"
#获取php-fpm的所有进程号
process=`pgrep php-fpm`
#echo "php-fpm process: $process"
case "$1" in
start)
if [ -n "$process" ]
then
echo ">>> php-fpm process is already running"
else
echo ">>> Starting php-fpm ..."
$PHP_FPM -c $PHP_INI -y $PHP_FPM_CONF
fi
;;
stop)
if [ ! -n "$process" ]
then
echo ">>> php-fpm process is not running"
else
echo ">>> php-fpm stopping ..."
kill -15 $process
while [ ! -n `pgrep php-fpm` ]
do
echo ">>> Waiting for php-fpm to shutdown ..."
sleep 1
done
echo ">>> php-fpm stopped"
fi
;;
*)
echo ">>> Please use start or stop as first argument"
;;
esac
第一行,说明shell的运行环境,有些服务器默认是sh,dbash,和 bash 还是有区别的,比如:dbash相等只支持一个=,而bash里可以用==表示,具体参考附录资料。
第二行和第三行,必须加的,因为chkconfig无法识别php-fpm服务,要手动加到运行级别中。
还有个知识点,关闭服务的命令一般用-15,由服务自己发起关闭,保证没有未处理完的进程在运行。
验证脚本
[root@init.d]# ./phpfpmd start
>>> Starting php-fpm ...
[root@init.d]# ./phpfpmd start
>>> php-fpm process is already running
[root@init.d]# ./phpfpmd stop
>>> php-fpm stopping ...
>>> php-fpm stopped
[root@init.d]# ./phpfpmd stop
>>> php-fpm process is not running
也可以用service
[~]$ sudo service phpfpmd stop
[sudo] user 的密码:
>>> php-fpm stopping ...
>>> php-fpm stopped
[~]$ sudo service phpfpmd start
>>> Starting php-fpm ...
将phpfpmd加入服务运行级别
[root@1 init.d]# chkconfig phpfpmd on
[root@1 init.d]# chkconfig --list
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
mysql 0:关 1:关 2:开 3:开 4:开 5:开 6:关
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
nginx 0:关 1:关 2:开 3:开 4:开 5:开 6:关
phpfpmd 0:关 1:关 2:开 3:开 4:开 5:开 6:关
redisd 0:关 1:关 2:开 3:开 4:开 5:开 6:关
重启机器
[root@1 init.d]# reboot
查看服务是否开启
[~]$ ps -ef | grep php-fpm
root 3154 1 0 10:11 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
newton 3155 3154 0 10:11 ? 00:00:00 php-fpm: pool www
newton 3156 3154 0 10:11 ? 00:00:00 php-fpm: pool www
newton 3157 3154 0 10:11 ? 00:00:00 php-fpm: pool www
newton 3158 3154 0 10:11 ? 00:00:00 php-fpm: pool www
newton 3159 3154 0 10:11 ? 00:00:00 php-fpm: pool www
newton 3161 3085 0 10:11 pts/1 00:00:00 grep --color=auto php-fpm
附录资料
linux中的sh、dash、bash的区别
LINUX系统的7种运行级别文章来源:https://www.toymoban.com/news/detail-417430.html
redis_init_script详解文章来源地址https://www.toymoban.com/news/detail-417430.html
到了这里,关于php-fpm设置开机启动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!