如何用Xshell在Linux下編寫啓停腳本【一】


如何用Xshell在Linux下編寫啓停腳本【一】-------  單個項目的啓停腳本


我們作爲碼農,在Linux環境部署項目是家常便飯的事兒,因此我們也時常需要自己來手動寫一些小的啓動/停止/重啓腳本;接下來我簡單爲大家講解下shell腳本,大家若有任何不懂之處,歡迎留言,有不妥之處,也歡迎點評指正。

Shell Script 簡介:

Shell腳本與Windows/Dos下的批處理相似,也就是用各類命令預先放入到一個文件中,方便一次性執行的一個程序文件,主要是方便管理員進行設置或者管理用的。但是它比Windows下的批處理更強大,比用其他編程程序編輯的程序效率更高,它使用了Linux/Unix下的命令。

shell和shell腳本有什麼區別?

Shell本身是一個用C語言編寫的程序,它是用戶使用Linux的橋樑。確切一點說,Shell就是一個命令行解釋器,它的作用就是遵循一定的語法將輸入的命令加以解釋並傳給系統。它爲用戶提供了一個向Linux發送請求以便運行程序的接口系統級程序,用戶可以用Shell來啓動、掛起、停止甚至是編寫一些程序。Shell既是一種命令語言,又是一種程序設計語言(就是你所說的shell腳本)。作爲命令語言,它互動式地解釋和執行用戶輸入的命令;作爲程序設計語言,它定義了各種變量和參數,並提供了許多在高階語言中才具有的控制結構,包括循環和分支。它雖然不是 Linux系統內核的一部分,但它調用了系統內核的大部分功能來執行程序、創建文檔並以並行的方式協調各個程序的運行。

shell腳本:打開文本編輯器(可以使用vi/vim命令來創建文件),新建一個文件test.sh,擴展名爲sh(sh代表shell),擴展名並不影響腳本執行,見名知意就好,如果你用php寫shell 腳本,擴展名就用php好了。

#!/bin/bash                    "#!" 是一個約定的標記,它告訴系統這個腳本需要什麼解釋器來執行,即使用哪一種Shell。
echo "Hello World !"            echo命令用於向窗口輸出文本。

腳本寫法一:

#!/bin/bash
#這裏可替換爲你自己的執行程序,其他代碼無需更改
APP_NAME=/usr/software/lin/project/stopcar/server-eureka-1.0.0.jar
 
#使用說明,用來提示輸入參數
usage() {
    echo "Usage: sh 執行腳本.sh [start|stop|restart|status]"
    exit 1
}
 
#檢查程序是否在運行
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在返回1,存在返回0     
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}
 
#啓動方法
start(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is already running. pid=${pid} ."
  else
    nohup java -jar $APP_NAME >> nohup.out 2>&1 &
    echo "...start OK!"
  fi
}
 
#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
    echo "...stop OK!"
  else
    echo "${APP_NAME} is not running"
  fi  
}
 
#輸出運行狀態
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}
 
#重啓
restart(){
  stop
  start
}
 
#根據輸入參數,選擇執行對應方法,不輸入則執行使用說明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

用腳本一寫的啓動成功,案例:

腳本寫法二:

#!/bin/bash
source /etc/profile
# chkconfig: - 57 75
# description: server-eureka

# Check that networking is up.
[[ ${NETWORKING} = "no" ]] && exit 1

start() {
echo "Starting server-eureka ..."
nohup java -jar -Xss768K -Xms1536m -Xmx1536m -Xmn1068m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 /home/park/server-eureka/server-eureka-1.0.0.jar &
#echo 3 >> /tmp/sunyu.txt
}

stop() {
echo "Stopping server-eureka ..."
kill -9 $(ps -ef | grep server-eureka-1.0.0 | grep -v grep | awk '{print $2}')
#echo 2 >> /tmp/sunyu.txt
}

# See how we were called.
case "$1" in
  start)
start
;;
  stop)
stop
;;
  restart|force-reload)
stop
start
;;
  *)
echo $"Usage: $0 {start|stop|restart|force-reload}"
exit 2
esac

腳本文件編寫好了,首先得給我們的腳本文件通過命令【chmod 700 文件名】授予權限,權限授權成功則爲綠色,否則白色,只有授權成功的文件,後續纔可執行成功。

只需要執行命令【./腳本文件名.sh start】,則會自動生成【nohup.out】日誌文件

輸入命令【ps -ef|grep eureka】可以通過端口號查看是否 啓動成功

輸入命令【cat nohup.out】即可查看啓動日誌

以上的腳本寫法一和腳本寫法二是專門針對單個項目的啓停。


下一篇 ----《如何用Xshell在Linux下編寫啓停腳本【二】》---- 多個項目的啓停腳本的編寫


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章