小工具:web端重啟java后臺(tái)

兩個(gè)東西:

1. 一個(gè)controller方法那槽,用于接收前端的請(qǐng)求,并調(diào)用linux的shell文件

2.shell文件

shell文件:server.sh

#!/bin/bash
app='eaglenos-admin.jar'
cmd=$1
pid=`ps -ef|grep java|grep $app|awk '{print $2}'`

startup(){
  nohup /opt/java/jdk1.8.0_311/bin/java -jar -Dlogging.config="./logback.xml"  -Dserver.port=28080 eaglenos-admin.jar --spring.config.location=file:./application.yml,file:./application-druid.yml>/dev/null 2>log &
}

if [ ! $cmd ]; then
  echo "Please specify args 'start|restart|stop'"
  exit
fi

if [ $cmd == 'start' ]; then
  if [ ! $pid ]; then
    startup
  else
    echo "$app is running! pid=$pid"
  fi
fi

if [ $cmd == 'restart' ]; then
  if [ $pid ]
    then
      echo "$pid will be killed after 3 seconds!"
      sleep 3
      kill -9 $pid
  fi
  startup
fi

if [ $cmd == 'stop' ]; then
  if [ $pid ]; then
    echo "$pid will be killed after 3 seconds!"
    sleep 3
    kill -9 $pid
  fi
  echo "$app is stopped"
fi

controller工具類:SysUtils.java

@RestController
public class SysUtils extends BaseController {
    //腳本的地址
    @Value("${refresh.scriptPath}")
    private String scriptPath;

    /**
     * 觸發(fā)升級(jí)
     * @return
     * @throws Exception
     */
    @RequestMapping("/refresh")
    private AjaxResult run() throws Exception {
        ProcessBuilder sh = new ProcessBuilder("sh",scriptPath,"restart");
        asynExeLocalComand(null, sh);
        return AjaxResult.success();
    }

    /**
     * 用來檢查服務(wù)是否正常
     * @return
     * @throws IOException
     */
    @RequestMapping("/getParam")
    private String getParam() throws IOException {
        return scriptPath;
    }

    public static void asynExeLocalComand(File file, ProcessBuilder pb) throws IOException {
        // 不使用Runtime.getRuntime().exec(command)的方式,因?yàn)闊o法設(shè)置以下特性
        // Java執(zhí)行本地命令是啟用一個(gè)子進(jìn)程處理,默認(rèn)情況下子進(jìn)程與父進(jìn)程I/O通過管道相連(默認(rèn)ProcessBuilder.Redirect.PIPE)
        // 當(dāng)服務(wù)執(zhí)行自身重啟的命令時(shí),父進(jìn)程關(guān)閉導(dǎo)致管道連接中斷,將導(dǎo)致子進(jìn)程也崩潰,從而無法完成后續(xù)的啟動(dòng)
        // 解決方式,(1)設(shè)置子進(jìn)程IO輸出重定向到指定文件;(2)設(shè)置屬性子進(jìn)程的I/O源或目標(biāo)將與當(dāng)前進(jìn)程的相同,兩者相互獨(dú)立
        if (file == null || !file.exists()) {
            // 設(shè)置屬性子進(jìn)程的I/O源或目標(biāo)將與當(dāng)前進(jìn)程的相同,兩者相互獨(dú)立
            pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
            pb.redirectError(ProcessBuilder.Redirect.INHERIT);
            pb.redirectInput(ProcessBuilder.Redirect.INHERIT);
        } else {
            // 設(shè)置子進(jìn)程IO輸出重定向到指定文件
            // 錯(cuò)誤輸出與標(biāo)準(zhǔn)輸出,輸出到一塊
            pb.redirectErrorStream(true);
            // 設(shè)置輸出日志
            pb.redirectOutput(ProcessBuilder.Redirect.appendTo(file));
        }
        // 執(zhí)行命令進(jìn)程
        System.out.println(pb.command());
        pb.start();
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惦辛,一起剝皮案震驚了整個(gè)濱河市俗孝,隨后出現(xiàn)的幾起案子条舔,更是在濱河造成了極大的恐慌叙赚,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拭荤,死亡現(xiàn)場(chǎng)離奇詭異茵臭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)舅世,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門旦委,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人雏亚,你說我怎么就攤上這事缨硝。” “怎么了罢低?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵查辩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我网持,道長(zhǎng)宜岛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任功舀,我火速辦了婚禮萍倡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘日杈。我一直安慰自己遣铝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布莉擒。 她就那樣靜靜地躺著酿炸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涨冀。 梳的紋絲不亂的頭發(fā)上填硕,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音鹿鳖,去河邊找鬼扁眯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛翅帜,可吹牛的內(nèi)容都是我干的姻檀。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼涝滴,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼绣版!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起歼疮,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬榮一對(duì)情侶失蹤杂抽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后韩脏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缩麸,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年赡矢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了杭朱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吹散,死狀恐怖痕檬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情送浊,我是刑警寧澤梦谜,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站袭景,受9級(jí)特大地震影響唁桩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜耸棒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一荒澡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧与殃,春花似錦单山、人聲如沸碍现。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昼接。三九已至,卻和暖如春悴晰,著一層夾襖步出監(jiān)牢的瞬間慢睡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工铡溪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留漂辐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓棕硫,卻偏偏與公主長(zhǎng)得像髓涯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子哈扮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 1.什么是監(jiān)控 2.為什么要做監(jiān)控 系統(tǒng)為什么要做監(jiān)控:監(jiān)控是整個(gè)運(yùn)維乃至整個(gè)產(chǎn)品生命周期中最重要的一環(huán).事前及時(shí)...
    Gq趙閱讀 975評(píng)論 0 0
  • #簡(jiǎn)介 深入學(xué)習(xí)Flask作為RestFul服務(wù)端的架構(gòu)思路复凳。了解Flask設(shè)計(jì)哲學(xué)、應(yīng)用場(chǎng)景灶泵。包含從開發(fā)環(huán)境搭建...
    愛睡覺的樹閱讀 2,453評(píng)論 0 1
  • 不會(huì)編程的小白通常會(huì)煩惱怎樣去處理一些簡(jiǎn)單的數(shù)據(jù)統(tǒng)計(jì)育八,不要緊其實(shí)日常我們用到百分之80以上的數(shù)據(jù)統(tǒng)計(jì)分析,都已經(jīng)有...
    lakeseafly閱讀 19,988評(píng)論 1 24
  • 原創(chuàng)作品赦邻,允許轉(zhuǎn)載髓棋,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章 原始出處 、作者信息和本聲明惶洲。否則將追究法律責(zé)任按声。http:...
    狼之獨(dú)步閱讀 3,141評(píng)論 0 2
  • 一、Impala概述(Impala是什什么恬吕,優(yōu)勢(shì)签则,劣勢(shì),與Hive對(duì)?) Impala是什什么 Impala是Cl...
    顧子豪閱讀 571評(píng)論 0 1