案例十 shell編寫nginx服務啟動程式

2021-09-25 04:18:12 字數 4711 閱讀 8296

使用原始碼包安裝的nginx沒辦法使用"service nginx start"或"/etc/init.d/nginx start"進行操作和控制,所以寫了以下的服務控制指令碼。

選項有:

start    啟動

stop    停止

reload   過載

restart    重啟

status   狀態

test    檢查配置檔案

指令碼一

建立指令碼檔案並新增執行許可權

touch /etc/init.d/nginx

chmod +x /etc/init.d/nginx

編寫指令碼內容

#!/bin/bash

# chkconfig: - 85 15

# description: nginx server control script

# processname: nginx

# config file: /usr/local/nginx/conf/nginx.conf

# pid file: /usr/local/nginx/logs/nginx.pid

#  # eastmoney public tools

# version: v1.0.0

# create by xuhoo, 2016-9-14

#  # source function library

. /etc/rc.d/init.d/functions

nginx_name="nginx"

nginx_prog="/usr/local/sbin/nginx"

nginx_pid_file="/usr/local/nginx/logs/nginx.pid"

nginx_conf_file="/usr/local/nginx/conf/nginx.conf"

nginx_lock_file="/var/lock/subsys/nginx.lock"

# check current user

[ "$user" != "root" ] && exit 1

start()

stop()

restart()

reload()

status() ' &> /dev/null

if [[ $? -eq 0 ]]; then

if [[ -f $nginx_lock_file ]]; then

return 0

else

return 1

fifi

return 1

}  _status() '`

echo $"nginx server status is: $state"

else

echo "nginx server is not running"

fi}  test()

case "$1" in

start)

start

;;stop)

stop

;;reload)

reload

;;restart)

restart

;;status)

_status

;;test)

test

;;*)

echo "usage: "

exit 1

esac

將指令碼新增到系統服務並設定開機啟動

chkconfig --add nginx

chkconfig --level 3 nginx on

指令碼二

[root@localhost ~]# cd /usr/local/nginx/conf/

[root@localhost conf]# ls

fastcgi.conf fastcgi_params koi-utf mime.types nginx.conf scgi_params uwsgi_params win-utf

fastcgi.conf.default fastcgi_params.default koi-win mime.types.default nginx.conf.default scgi_params.default uwsgi_params.default

備份主配置檔案

[root@localhost conf]# cp nginx.conf nginx.conf.origin

[root@localhost conf]# vim nginx.conf

去除#pid logs/nginx.pid;前面#號

[root@localhost conf]# netstat -anpt | grep 80

tcp 0 0 0.0.0.0:80 0.0.0.0:* listen 19108/nginx

[root@localhost conf]# kill -3 19108

[root@localhost conf]# netstat -anpt | grep 80

[root@localhost conf]# nginx

[root@localhost conf]# netstat -anpt | grep 80

tcp 0 0 0.0.0.0:80 0.0.0.0:* listen 19864/nginx

[root@localhost conf]# cd ../logs/

[root@localhost logs]# ls

access.log error.log nginx.pid

[root@localhost logs]# cat nginx.pid

19864

編輯寫服務指令碼

[root@localhost ~]# vim /etc/init.d/nginx

可以使用的選項有:

start    啟動

stop    停止

reload   過載

restart    重啟

status   狀態

test    檢查配置檔案

#!/bin/bash

#chkconfig: 2345 99 20

#description:nginx server control scripts shell

prog="/usr/local/nginx/sbin/nginx"

pidf="/usr/local/nginx/logs/nginx.pid"

case "$1" in

start)

if [ -f $pidf ];

then

echo "nginx正在執行…"

else

$prog

fi;;

stop)

if [ -f $pidf ];

then

kill -3 $(cat $pidf)

rm -f $pidf

else

echo "nginx正在停止…"

fi;;

restart)

$0 stop

$0 start

;;reload)

if [ -f $pidf ];

then

kill -1 $(cat $pidf)

else

fi;;

status)

if [ -f $pidf ];

then

echo "nginx正在執行"

else

echo "nginx停止"

fi;;

*)echo "usage: $0 (start|stop|restart|reload|status)"

exit 1

esac

exit 0

指令碼檔案並新增執行許可權

[root@localhost ~]# chmod +x /etc/init.d/nginx

將指令碼新增到系統服務並設定開機啟動

[root@localhost ~]# chkconfig --add nginx

新增為服務啟動項

[root@localhost ~]# chkconfig --list nginx

nginx 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉

[root@localhost ~]# chkconfig --level 3 nginx on

測試指令碼是否能夠執行

[root@localhost ~]# service nginx start

nginx正在執行…

[root@localhost ~]# service nginx restart

[root@localhost ~]# service nginx stop

[root@localhost ~]# service nginx stop

nginx正在停止…

[root@localhost ~]# service nginx start

[root@localhost ~]# service nginx status

nginx正在執行

shell編寫判斷nginx

bin bash nginx usr local nginx sbin nginx read ep 請輸入要執行的命令 start stop status reload str case str in start 檢測nginx是否啟動 netstat nlpt grep nginx dev nul...

shell 編寫nginx啟動指令碼

ubuntu16.04編譯安裝nginx1.13 sudo apt install y build essential sudo apt install y libtool sudo apt install y libpcre3 libpcre3 dev sudo apt install y zli...

編寫shell指令碼的方式來處理nginx

使用原始碼包安裝的nginx沒辦法使用 service nginx start 或 etc init.d nginx start 進行操作和控制,所以寫了以下的服務控制指令碼。可以使用的選項有 start 啟動 stop 停止 reload 過載 restart 重啟 status 狀態 test ...