案例十:shell編寫nginx服務啟動程式
使用原始碼包安裝的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() { status if [[ $? -eq 0 ]]; then echo $"Nginx (PID $(cat $NGINX_PID_FILE)) already started." return 1 fi echo -n $"Starting $NGINX_NAME: " daemon $NGINX_PROG -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $NGINX_LOCK_FILE return $retval } stop() { status if [[ $? -eq 1 ]]; then echo "Nginx server already stopped." return 1 fi echo -n $"Stoping $NGINX_NAME: " killproc $NGINX_PROG retval=$? echo [ $retval -eq 0 ] && rm -f $NGINX_LOCK_FILE return $retval } restart() { stop sleep 1 start retval=$? return $retval } reload() { echo -n $"Reloading $NGINX_NAME: " killproc $NGINX_PROG -HUP retval=$? echo return $retval } status() { netstat -anpt | grep "/nginx" | awk '{print $6}' &> /dev/null if [[ $? -eq 0 ]]; then if [[ -f $NGINX_LOCK_FILE ]]; then return 0 else return 1 fi fi return 1 } _status() { status if [[ $? -eq 0 ]]; then state=`netstat -anpt | grep "/nginx" | awk '{ print $6 }'` echo $"Nginx server status is: $state" else echo "Nginx server is not running" fi } test() { $NGINX_PROG -t -c $NGINX_CONF_FILE retval=$? return $retval } case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; status) _status ;; test) test ;; *) echo "Usage: { start | stop | reload | restart | status | test }" 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 echo "Nginx正在停止…重新載入" 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正在執行
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2650493/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- shell監控服務程式是否啟動
- Shell階段04 shell流程之case語句, 服務啟動停止指令碼(rsync, nginx), shell加鎖機制指令碼Nginx
- 【IDL〕編寫程式啟動介面
- WEB服務-Nginx之十-keepalivedWebNginx
- shell指令碼監控啟動停止weblogic服務指令碼Web
- 服務啟動一個程式
- C# Windows Service 服務程式的編寫C#Windows
- 手動編寫mock服務(ma-mock)Mock
- Shell編譯安裝nginx編譯Nginx
- grpc套路服務端編寫RPC服務端
- windows 服務執行啟動桌面程式Windows
- 記一次 Ubuntu 服務 Nginx 無法啟動問題UbuntuNginx
- android native service編寫及兩個服務程式通訊Android
- systemd 編寫服務管理指令碼指令碼
- 編寫shell指令碼讓springboot專案在CentOS中開機自啟動指令碼Spring BootCentOS
- nginx服務Nginx
- 利用WinSW將Nginx 作為可正常啟動/停止的windows服務NginxWindows
- python 啟動http服務PythonHTTP
- linux 下啟動服務Linux
- gitblit 服務啟動不了Git
- Nginx代理服務Nginx
- Linux使用Ambari啟動服務啟動失敗Linux
- Kali Linux常用服務配置教程啟動DHCP服務Linux
- 怎麼啟動postgresql服務SQL
- mongodb服務在哪裡啟動?MongoDB
- 控制linux啟動的服務Linux
- windows下啟動nacos服務Windows
- dubbo服務啟動的方式
- DUBBO服務啟動過程
- 啟動與關閉服務
- 專案啟動指令碼的編寫指令碼
- centos 自動啟動指令碼和自啟動服務CentOS指令碼
- 如何使用zx編寫shell指令碼指令碼
- 如何編寫高效的 Shell 指令碼指令碼
- 編寫shell指令碼的規範指令碼
- Shell編寫,1到100的和。
- Nginx靜態服務Nginx
- Linux 部署 Nginx 服務LinuxNginx