技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁 > 教程 > 硬件教程 >

Nginx重啟的簡(jiǎn)單命令

來源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2018-11-08 06:35┆點(diǎn)擊:

  當(dāng)我們?cè)贜ginx中安裝完一個(gè)新程序之后就需要進(jìn)行重啟,其實(shí)在重啟的時(shí)候有個(gè)小技巧。kill命令就是一個(gè)十分神奇的命令。下面我們就來學(xué)些有關(guān)kill命令如何來進(jìn)行Nginx重啟的。

  如果機(jī)器比較慢,Nginx重啟kill進(jìn)程時(shí)一瞬間殺不完,再執(zhí)行一次即可。這種重啟方式不是特別安全,如果配置有誤,則會(huì)重啟失敗,需要重新修改配置文件然后再啟動(dòng),期間會(huì)消耗一點(diǎn)時(shí)間。不過對(duì)于目前普遍還是不怎么嚴(yán)格的http界而言,這點(diǎn)時(shí)間還不至于產(chǎn)生太大損失,只要不是在關(guān)鍵時(shí)刻搞出來就好。如果希望沿用這種重啟辦法,我提議還是先好好測(cè)試吧。

  后來我在nginx.net上看到了一種更奇妙的Nginx重啟

  kill -HUP $pid($pid就是nginx master進(jìn)程的進(jìn)程號(hào))

  我一般這樣用

  kill -HUP `cat /data/nginx/logs/nginx.pid`

  這種方式的好處是實(shí)現(xiàn)“平滑重啟”,在ps -aux中可以看到,nginx首先啟動(dòng)新進(jìn)程,舊的進(jìn)程仍然提供服務(wù),在一段時(shí)間后,舊的進(jìn)程服務(wù)結(jié)束就自動(dòng)關(guān)閉,剩下新進(jìn)程繼續(xù)服務(wù)。但是這種方式也是有缺點(diǎn)的,如果配置文件有誤,或者資源沖突,則重啟失效,但nginx并沒有任何的提示!這就會(huì)時(shí)常發(fā)現(xiàn)改動(dòng)的配置文件沒有生效,又比較難找到問題。

  所以,最后雜和了一下問題,弄了一個(gè)nginx.sh,這個(gè)版本的nginx.sh還是沒有解決kill -HUP的資源沖突的問題,但解決了配置文件的問題。資源沖突的比如80端口被占用、日志文件目錄沒有創(chuàng)建這種的。

  參考網(wǎng)上的做法,用如下腳本控制:

  #!/bin/sh

  BASE_DIR='/usr/local/'

  ${BASE_DIR}nginx/sbin/nginx -t -c ${BASE_DIR}nginx/conf/nginx.

  conf >& ${BASE_DIR}nginx/logs/nginx.start

  info=`cat ${BASE_DIR}nginx/logs/nginx.start`

  if [ `echo $info | grep -c "syntax is ok" ` -eq 1 ]; then

  if [ `ps aux|grep "nginx"|grep -c "master"` == 1 ]; then

  kill -HUP `cat ${BASE_DIR}nginx/logs/nginx.pid`

  echo "ok"

  else

  killall -9 nginx

  sleep 1

  ${BASE_DIR}nginx/sbin/nginx

  fi

  else

  echo "######## error: ########"

  cat ${BASE_DIR}nginx/logs/nginx.start

  fi

  以上就是對(duì)Nginx重啟的詳細(xì)介紹希望大家有所收獲。