看了nginx和redis的shell啟動(dòng)腳本,發(fā)現(xiàn)服務(wù)的開(kāi)啟和關(guān)閉其實(shí)就是操作服務(wù)進(jìn)程號(hào),那么給php服務(wù)也寫(xiě)個(gè)shell腳本,也能實(shí)現(xiàn)service start 和 stop?
?進(jìn)入Linux服務(wù)的初始化目錄
[root@1 ]# cd /etc/init.d/
# 或者
[root@1 init.d]# cd /etc/rc.d/init.d/
創(chuàng)建phpfpmd進(jìn)程腳本(進(jìn)程控制腳本規(guī)范上默認(rèn)都加后綴d)
vim phpfpmd
#!/bin/bash
# chkconfig: 2345 90 10
# description: php-fpm is web server
#服務(wù)在運(yùn)行級(jí)2,3,4,5下被啟動(dòng)或關(guān)閉,啟動(dòng)的優(yōu)先級(jí)是90,關(guān)閉的優(yōu)先級(jí)是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的所有進(jìn)程號(hào)
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
?第一行,說(shuō)明shell的運(yùn)行環(huán)境,有些服務(wù)器默認(rèn)是sh,dbash,和 bash 還是有區(qū)別的,比如:dbash相等只支持一個(gè)=,而bash里可以用==表示,具體參考附錄資料。
第二行和第三行,必須加的,因?yàn)閏hkconfig無(wú)法識(shí)別php-fpm服務(wù),要手動(dòng)加到運(yùn)行級(jí)別中。
還有個(gè)知識(shí)點(diǎn),關(guān)閉服務(wù)的命令一般用-15,由服務(wù)自己發(fā)起關(guān)閉,保證沒(méi)有未處理完的進(jìn)程在運(yùn)行。
驗(yàn)證腳本
[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加入服務(wù)運(yùn)行級(jí)別
[root@1 init.d]# chkconfig phpfpmd on
[root@1 init.d]# chkconfig --list
注:該輸出結(jié)果只顯示 SysV 服務(wù),并不包含
原生 systemd 服務(wù)。SysV 配置數(shù)據(jù)
可能被原生 systemd 配置覆蓋。
要列出 systemd 服務(wù),請(qǐng)執(zhí)行 'systemctl list-unit-files'。
查看在具體 target 啟用的服務(wù)請(qǐng)執(zhí)行
'systemctl list-dependencies [target]'。
mysql 0:關(guān) 1:關(guān) 2:開(kāi) 3:開(kāi) 4:開(kāi) 5:開(kāi) 6:關(guān)
netconsole 0:關(guān) 1:關(guān) 2:關(guān) 3:關(guān) 4:關(guān) 5:關(guān) 6:關(guān)
network 0:關(guān) 1:關(guān) 2:開(kāi) 3:開(kāi) 4:開(kāi) 5:開(kāi) 6:關(guān)
nginx 0:關(guān) 1:關(guān) 2:開(kāi) 3:開(kāi) 4:開(kāi) 5:開(kāi) 6:關(guān)
phpfpmd 0:關(guān) 1:關(guān) 2:開(kāi) 3:開(kāi) 4:開(kāi) 5:開(kāi) 6:關(guān)
redisd 0:關(guān) 1:關(guān) 2:開(kāi) 3:開(kāi) 4:開(kāi) 5:開(kāi) 6:關(guān)
重啟機(jī)器
[root@1 init.d]# reboot
查看服務(wù)是否開(kāi)啟
[~]$ 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的區(qū)別
LINUX系統(tǒng)的7種運(yùn)行級(jí)別文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-417430.html
redis_init_script詳解文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-417430.html
到了這里,關(guān)于php-fpm設(shè)置開(kāi)機(jī)啟動(dòng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!