Linux關閉jetty服務器腳本


Linux 停止與啟動服務器

在日常的開發中,我們經常需要停止tomcat或jetty服務器進行一些操作后,然后重新啟動服務器。
下面即為停止jetty服務器的一段腳本。我們通過腳本來理解一下這里面的腳本

#!/bin/bash
pidlist=`ps -ef|grep start.jar|grep -v "grep"|awk '{print $2}'`
if [ "$pidlist" = "" ];then
      echo "no pid alive"
else
      for pid in ${pidlist}
      {
         kill -9 $pid
         echo "KILL $pid:"
      }
      echo "app stop success"
fi
rm -rf /home/user/jetty/data
cd /home/user/jetty
java -jar start.jar

通過jar包尋找其啟動的進程

ps 命令

  • -e 顯示所有進程
  • -f 全格式

ps -ef 顯示格式:

  • 1.UID 用戶ID
  • 2.PID 進程ID
  • 3.PPID 父進程ID
  • 4.C CPU占用率
  • 5.STIME 開始時間
  • 6.TTY 開始此進程的TTY----終端設備
  • 7.TIME 此進程運行的總時間
  • 8.CMD 命令名

grep 命令

正則匹配,輸出匹配上數據之外的所有行 -v 選項:

grep -v "match_pattern" file_name

"|"代表其前面的輸出作為后面表達式的輸入

awk '{print $2,$5}'

可以認為是輸出函數 數據行一空格分割,索引從1開始,打印第幾個數據

例如:

執行awk '{print $2,$5}'的輸出結構為:

至此,第一行的腳本我們就知道是什么意思了

pidlist=`ps -ef|grep start.jar|grep -v "grep"|awk '{print $2}'`

查找進程中 包含start.jar的但是又不包含grep 的輸出其第2個參數 即進程的ID--PID

逐條kill進程

使用方法

kill[參數][進程號]

其中參數的類型為:

腳本中使用

kill -9 $pid

意思是強制終止進程

移除文件

rm

  • -i 刪除前逐一詢問確認。
  • -f 略過不存在的文件,不顯示任何信息,強制刪除
  • -r 同時刪除該目錄下的所有目錄層
rm -rf /home/user/jetty/data

強制刪除/home/user/jetty/data下的所有文件及目錄。

java -jar start.jar

重新啟動jetty

在刪除文件前先停止服務器的原因

  • 如果不停止服務器,倘若有人使用文件,將會導致程序錯誤
  • 如果不停止服務,因為程序持有文件的引用,會導致刪除失敗


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM