生產環境中使用腳本實現tomcat start|status|stop|restart

来源:http://www.cnblogs.com/Steward-Xu/archive/2017/04/14/6710360.html
-Advertisement-
Play Games

一、在實際生產環境中tomcat啟動是在bin目錄下採用自帶腳本startup.sh啟動;使用shutdown.sh關閉。如下圖: 再如果對於新手來講在不知道路徑情況下重啟是一件頭痛的事情(註意沒有reload,所以重啟只能shutdown.sh在startup.sh);而且這裡還有一個坑等著: 什 ...


一、在實際生產環境中tomcat啟動是在bin目錄下採用自帶腳本startup.sh啟動;使用shutdown.sh關閉。如下圖:

  

  再如果對於新手來講在不知道路徑情況下重啟是一件頭痛的事情(註意沒有reload,所以重啟只能shutdown.sh在startup.sh);而且這裡還有一個坑等著:

什麼坑呢?   如圖:

  

  tomcat服務是啟動成功了的。那麼我想停止服務用shutdown.sh,會出現什麼呢?

  

  進程還在而且成為了僵屍進程,萬惡啊?居然關不了,終極方法kill -9 進程號。試試?

  

  終於幹掉了。

  再次啟動:

  

  OK已經成功;還有一個坑在?請看,服務已經啟動,如果我再次執行startup.sh會出現什麼呢?

  

  請看紅色,啟動命令能正常執行,而且還能啟動一個服務意思是有雙服務雙進程。萬惡啊……

  好問題來了我們如何簡單命令的啟動tomcat服務呢?如何讓服務啟動了再次執行啟動就不會執行了呢?ok。shell腳本實現:

二、腳本實現

  1 #!/bin/bash
  2 #############################################
  3 # this script is created by xuxuedong.                                           #
  4 # e_mail:365686746@qq.com                                                      #
  5 # qqinfo:365686746                                                                    #
  6 # This is server start to chkconfig.                                                #
  7 # version:1.1                                                                              #
  8 #############################################
  9 # chkconfig: 2345 92 92
 10 #         description: Saves and restores system entropy pool for \
 11 #         higher quality random number generatio
 12 
 13 . /etc/init.d/functions
 14 #set env
 15 export PATH=$PATH:/bin:/sbin:/usr/sbin
 16 export LANG="zh_CN.GB18030"
 17 
 18 # Require root to run this script.
 19 if [[ "$(whoami)" != "root" ]]; then
 20      echo "Please run this script as root." >&2
 21      exit 1
 22 fi
 23 
 24 # Source function library.
 25 #. /etc/init.d/functions
 26 if [ ! -f /opt/software/apache-tomcat-7.0.72/bin/startup.sh ]
 27        then
 28             echo "tomcat is not exit.please install."
 29             exit 1
 30 fi
 31 #This is a function for start tomcat
 32 function start(){
 33         if [ `ps -ef |grep java|grep -v grep|grep -v sh|wc -l` -eq 0 ]
 34               then
 35                     /bin/sh /opt/software/apache-tomcat-7.0.72/bin/startup.sh >/dev/null 2>&1
 36                     [ $? -eq 0 ]&&\
 37                     sleep 1
 38                     action "tmocat start." /bin/true
 39               else
 40                     action "tomcat had been startted." /bin/true
 41                     exit 3
 42         fi
 43 }
 44 #This is a function for stop tomcat
 45 function stop(){
 46         if [ `ps -ef |grep java|grep -v grep|grep -v sh|wc -l` -gt 0  ]
 47                 then
 48                         PID=`ps -ef |grep java|grep -v grep|awk '{print $2}'`
 49                         kill -9 $PID
 50                         [ $? -eq 0 ]&&\
 51                         echo "tomcat is stopping..."
 52                         sleep 1
 53                         action "tomcat  been stoped." /bin/true
 54                  else
 55                         action "tomcat had been stoped." /bin/true
 56                         exit 4
 57         fi
 58 }
 59 #This is a function for restart tomcat
 60 function restart(){
 61         if [ `ps -ef |grep java |grep -v grep|grep -v sh|wc -l` -gt 0  ]
 62                then
 63                  PID1=`ps -ef |grep java|grep -v grep|awk '{print $2}'`
 64                         kill -9 $PID1
 65                         [ $? -eq 0 ]&&/bin/sh /opt/software/apache-tomcat-7.0.72/bin/startup.sh >/dev/null 2>&1
 66 
 67                         [ $? -eq 0 ]&&echo "tomcat is restarting..."
 68                         sleep 1
 69                         action "tomcat is restartted ." /bin/true
 70                 else
 71                         action "tomcat is not running,please start." /bin/true
 72                         exit 5
 73         fi
 74 }
 75 #This is a function for status tomcat
 76 function status(){
 77         if [ `ps -ef |grep java |grep -v grep|wc -l` -gt 0  ]
 78                 then
 79                      action "tomcat is running."  /bin/true
 80                 else
 81                       action "tomcat is stopped." /bin/false
 82                       exit 5
 83         fi
 84 }
 85 case $1 in
 86         start)
 87         start
 88 ;;
 89         stop)
 90         stop
 91 ;;
 92         restart)
 93         restart
 94 ;;
 95         status)
 96         status
 97 ;;
 98 
 99         *)
100         echo "USAG:start|stop|restart|status"
101 esa         
vim tomcatd.sh

 

  放心這腳本是我工作中自己寫的啟動腳本,已經測試過。如有疑問請看腳本執行情況:

   請看:

  1、首先來看下服務是否啟動

   

       腳本實現了查看服務是否啟動;

  2、再次執行腳本看看能否啟動多個服務

  

  註意紅色部分已經提示服務已經啟動不需要在執行命令了,而且查看進程只有一個剛啟動服務。

  3.停止服務還有僵屍進程嗎?:

  

  停止後服務沒有了?

  4.那我們在服務沒有起來的情況下,我們想重啟服務呢?

  

  沒有啟動服務情況下執行restart會提示,而且服務也不會啟動。

  5、啟動服務:

  

  服務又起來了。

  6、如果是別人不知道這個服務後面要給參數或者輸錯了參數start|stop|restart|status才能啟動那麼會出現什麼效果呢?

  

  

  OK到現在所有的功能已經實現而且跟系統的 啟動方法類似了。只是系統實現的是、service  XXXX  start|stop|restart|status或者是etc/init.d/xxx   start|stop|restart|status

如何才能實現和系統一模一樣的功能呢?

三、使用service  tomcatd  start啟停或者是/etc/init.d/tomcatd  start

  1、將腳本文件拷貝至/etc/init.d/

    cp  tomcatd.sh  /etc/init.d/tomcatd

    chmod +x /etc/init.d/tomcatd 加可執行許可權。

    預設已經可執行service  tomcatd  start|stop|restart|status

  2、將tomcatd加入chkconfig開機自啟動。

    # chkconfig: 2345 92 92  請註意以上腳本文件中有這一行表示2345啟動號碼是92

    從哪兒來的?

    使用ls  -l   /etc/rc3.d 可查看

    

    註意:最好從中選去沒有的號碼如:

    

    已經有27了那麼不能使用27。

     

    93  94  92 (原本沒有之後加入了tomcatd)表示沒有用可用

    所以使用92

  3、使用chkconfig  --add   tomcatd  加入

    

    不報錯表示成功;

  4、檢查一下:chkconfig  --list |grep  tomcatd

    

  

  

  ok  成功!

  以上是簡單的腳本實現功能,高手繞道,不好勿噴,適合初學以及腳本學習者,原本想在腳本中增加註釋,但是自己想偷懶如有疑問可留言。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言: Linux專題是16年11月開始寫,說來慚愧,已經5個月沒學Linux,至今感覺連入門還沒達到。暑假實習有投運維開發崗位,無奈對Linux不熟悉,校招簡歷也被刷了。so, 我打算先花1個月內的時間入下門。前幾天還專門去噹噹網買了一本《跟老男孩學Linux運維-Web集群實戰》。lenrnin ...
  • 今天打開電腦,與往常一樣輸入用戶名密碼登錄後,發現桌面上空空如也,啟動欄launch,menu bar什麼的都消失了,桌面上文件可以打開,但是無法拖動位置,無法關閉(因為menu bar沒了,無法滑鼠點擊關閉), 經過苦苦搜索幾個小時之後找到解決方案如下,記錄下來方便有相同問題的人: 問題原因:un ...
  • 類似Windows, Linux也是一個操作系統,Linux是一套開放源代碼程式,並可以自由傳播的類Unix操作系統軟體,多用戶,多任務並且支持多線程和多CPU的操作系統。 Linux系統主要被應用於伺服器端,嵌入式開發和個人PC桌面3大領域,其中伺服器端領域是重中之重。 大型,超大型互聯網企業(百 ...
  • grep的作用:文本搜索工具,根據用戶指定的“模式”對目標文件逐行進行匹配檢查:列印匹配到的行。 模式:正則表達式編寫的過濾條件。 正則表達式(REGEXP):由一類特殊字元及文本字元所編寫的模式,其中有一些字元不表示字元字面意義,而表示控制或通配的功能。 分成兩類: 基本正則表達式:BRE 擴展正 ...
  • Ubuntu16.04安裝NVIDIA驅動時的一些坑與解決方案 ...
  • AR8033協商成1000M工作模式時,ping包丟失嚴重;通過關閉Green Feature可規避。 ...
  • 打算用家裡的台式機啟用ssh server用筆記本ssh登入linux家裡電腦 lubantu 使用命令sudo apt-get install openssh-server安裝openssh server安裝成功後ps查看是否有sshd進程然後在筆記本windows下使用xshell訪問 ...
  • 簡單的總結一下前段時間學習Linux的成果 查看 TCP 22 埠是否打開1、列出所有埠:[root@Demon proc]# netstat -ntlpActive Internet connections (only servers)Proto ... 一、查看 TCP 22 埠是否打開1 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...