Linux Java 應用重啟腳本

Linux Java 應用重啟腳本

  • 本文主要是介紹腳本的實現(xiàn)介粘,以及給一些先自動化優(yōu)雅處理 Java 應用重啟的同學帶來一些幫助
  • 一般直接啟動 java 應用時候都是需要手打命令后臺啟動應用幔烛,通過 ps -ef 查找進程 kill 或者 kill -9 應用 ,這樣繁瑣的操作不想每次都去做胚膊,想自動化實現(xiàn),這個腳本可能就是滿足你的需求了
  • 如果是使用 docker 容器或者其他一些容器化的工具揖膜,這個文章可能就不合適了疮蹦,因為那些工具有更加強好用的實現(xiàn)方式

shell 腳本

#!/bin/bash
for service_name in "$@"; do
  app="$service_name.jar"

  # 配置信息
  # jar 啟動路徑(選填,不包含 **.jar eg:/home/java) 盡量避免誤殺進程,建議寫路徑否副,否則取當前目錄
  jar_path=
  # jar 啟動參數(shù)(選填)
  java_opts="-Xms350m -Xmx350m"
  # 啟動參數(shù)追加(選填)
  append_params=
  # 最大等待次數(shù)
  max_wait_times=3
  # 每隔多少秒執(zhí)行一次 kill 命令
  kill_wait_time=10

  # 該程序有多個進程正在運行汉矿,則僅查找最老的,即最先啟動的(多個進程時即父進程PID)
  if [ -z "$jar_path" ] || [ "." = "$jar_path" ]; then
    grep_app_param=$app
  else
    grep_app_param=$jar_path/$app
  fi
  pid=$(pgrep -of $grep_app_param)
  process_count=$(pgrep -f $grep_app_param | wc -l)
  # 當前等待次數(shù)
  wait_times=0
  echo "當前應用[$service_name]存在數(shù)量:[$process_count]"
  if [ "$process_count" != 0 ]; then
    while [ "$process_count" != 0 ] && [ "$wait_times" -lt "$max_wait_times" ]; do
      wait_times=$((wait_times + 1))
      echo "第 $wait_times 次停止應用:[$service_name],pid:[$pid],剩余進程數(shù):[$process_count],請稍等 $kill_wait_time s ..."
      kill "$pid"
      sleep $kill_wait_time
      process_count=$(pgrep -f $grep_app_param | wc -l)
    done
    echo "應用已停止:[$service_name]"
  else
    echo "應用未運行:[$service_name]"
  fi

  if [ "$process_count" != 0 ] && [ $wait_times -ge $max_wait_times ]; then
    read -r -n1 -p "應用未能夠正常停止運行:[$service_name],是否強殺進程[Y|N]?" answer
    case $answer in
    Y | y | 是)
      kill -9 "$pid"
      echo -e "\n應用強制停止運行:[$service_name]"
      sleep 2
      ;;
    N | n | 否)
      continue
      ;;
    esac
  fi

  read -r -n1 -p "是否啟動應用[Y|N]?" answer
  case $answer in
  Y | y | 是)
    echo -e "\n啟動應用:[$service_name]"
    nohup java -jar $java_opts $grep_app_param $append_params >>/dev/null &
    echo "正在后臺啟動應用:[$service_name]"
    ;;
  N | n | 否)
    continue
    ;;
  esac
done

使用案例

當前目錄為 /root/test

?  pwd
/root/test

假如當前目錄存在 3 個 jar 包: server1.jar,server2.jar,server3.jar 和一個上面的重啟腳本: restart-service.sh

?  tree .           
.
├── restart-service.sh
├── server1.jar
├── server2.jar
└── server3.jar

0 directories, 4 files

為腳本添加執(zhí)行權限

chmod +x restart-service.sh

批量重啟或啟動 3 個服務(注意重啟 java 應用不需要加 .jar)

./restart-service.sh server1 server2 server3

重啟或啟動單個服務(注意重啟 java 應用不需要加 .jar)

./restart-service.sh server1
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末备禀,一起剝皮案震驚了整個濱河市洲拇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌曲尸,老刑警劉巖赋续,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異另患,居然都是意外死亡纽乱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進店門昆箕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸦列,“玉大人,你說我怎么就攤上這事鹏倘∈磬停” “怎么了?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵第股,是天一觀的道長应民。 經(jīng)常有香客問我,道長夕吻,這世上最難降的妖魔是什么诲锹? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮涉馅,結(jié)果婚禮上归园,老公的妹妹穿的比我還像新娘。我一直安慰自己稚矿,他們只是感情好庸诱,可當我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晤揣,像睡著了一般桥爽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上昧识,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天钠四,我揣著相機與錄音,去河邊找鬼跪楞。 笑死缀去,一個胖子當著我的面吹牛侣灶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缕碎,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼褥影,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了咏雌?” 一聲冷哼從身側(cè)響起凡怎,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赊抖,沒想到半個月后栅贴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡熏迹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凝赛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片注暗。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖墓猎,靈堂內(nèi)的尸體忽然破棺而出捆昏,到底是詐尸還是另有隱情,我是刑警寧澤毙沾,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布骗卜,位于F島的核電站,受9級特大地震影響左胞,放射性物質(zhì)發(fā)生泄漏寇仓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一烤宙、第九天 我趴在偏房一處隱蔽的房頂上張望遍烦。 院中可真熱鬧,春花似錦躺枕、人聲如沸服猪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽罢猪。三九已至,卻和暖如春叉瘩,著一層夾襖步出監(jiān)牢的瞬間膳帕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工房揭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留备闲,地道東北人晌端。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像恬砂,于是被迫代替她去往敵國和親咧纠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,937評論 2 361