1. 程式人生 > 其它 >2分鐘-實現開機nginx開機自啟動指令碼(shell篇)

2分鐘-實現開機nginx開機自啟動指令碼(shell篇)

2分鐘-實現開機nginx開機自啟動指令碼(shell篇)

作者:邱月濤時間: 2021-02-05 08:53:20 標籤:開機chkconfig自動化和devops
【摘要】如何快速寫個啟動指令碼,主要通過如下幾部1,邏輯捋順可以在txt檔案中,已虛擬碼的方式,形成體系,羅列順序,然後在一點點補充程式碼通過PID 程序檔案,判斷程式是否執行設定3個模組(開啟,關閉,重新載入)然後在用case語句 去呼叫這個3個模組 實現啟動指令碼功能restart看程序號變化,reload看配置檔案是否生效2,指令碼主體內容[root@DB02]#cat/etc/init.d/ng...

如何快速寫個啟動指令碼,主要通過如下幾部

1,邏輯捋順

  • 可以在txt檔案中,已虛擬碼的方式,形成體系,羅列順序,然後在一點點補充程式碼

  • 通過PID 程序檔案,判斷程式是否執行

  • 設定3個模組(開啟,關閉,重新載入)

  • 然後在用case語句 去呼叫這個3個模組 實現啟動指令碼功能

  • restart看程序號變化,reload看配置檔案是否生效

2,指令碼主體內容

[root@DB02]# cat /etc/init.d/nginx
#!/bin/bash
# chkconfig: 2345 32 62  #按照開機啟動模板設定,32序列號 62系統等級
# description: Activates/Deactivates all network interfaces configured to \
 
[ -f /etc/init.d/functions ] &&  . /etc/init.d/functions  #引用系統函式庫
nginx=/application/nginx/sbin/nginx
Pidfile=/application/nginx/logs/nginx.pid
oldboy(){ RETVAL=$? if [ $RETVAL -eq 0 ];then action "Nginx is $1" /bin/true else action "Nginx is $1" /bin/false fi
}
##no.1 定義啟動模組
Start(){
  if [ -f $Pidfile ];then echo "Nginx is running" else $nginx oldboy started
  fi return $RETVAL
}
##no.2 定義關閉模組
Stop(){
  if [ ! -f $Pidfile ];then echo "nginx in not running" else $nginx -s stop oldboy stoped
  fi
}
##no.3 定義重新載入模組
Reload(){
  if [ ! -f $Pidfile ];then echo "Cat't open $Pidfile ,no such file or directory"
  else $nginx -s reload oldboy reloaed fi
}
 
case "$1" in start) Start
;; stop) Stop
;; reload) Reload
;; restart) Stop sleep 2 Start
;; *) echo "Usage: sh $0 {start|stop|reload|restart} " exit 1
esac
exit   $RETVAL

3,把指令碼放到/etc/init.d/ 下

3.1 檢視服務自啟動列表

[root@DB02 init.d]# chkconfig --list|grep nginx
[root@DB02 init.d]# chkconfig --list|grep mysql
mysqld 0:關閉1:關閉2:啟用3:啟用4:啟用5:啟用6:關閉

3.2 把指令碼寫入到/etc/init.d

[root@DB02 init.d]# cd /etc/init.d/
[root@DB02 init.d]# vi nginx   #內容見上面指令碼

3.3 授權指令碼 x執行許可權

[root@DB02 init.d]# chmod +x nginx 
[root@DB02 init.d]# ll nginx 
-rwxr-xr-x 1 root root 1177 9月  26 15:45 nginx

4,新增開機自啟動

[root@DB02 init.d]# chkconfig nginx on
service nginx does not support chkconfig   ##報錯,沒有把nginx檔案,新增到開機自啟動裡面
[root@DB02 rc3.d]# chkconfig --list|grep nginx
nginx 0:關閉	1:關閉	2:啟用	3:啟用	4:啟用	5:啟用	6:關閉

4.1測試

[root@DB02 rc3.d]# /etc/init.d/nginx start
Nginx is running

另外一種,開機自啟動方法,可以把啟動內容放到/etc/rc.local檔案中,主要要使用絕對路徑