Linux腳本-自動(dòng)運(yùn)維部署腳本

背景

公司正常的業(yè)務(wù)流程是生產(chǎn)服務(wù)器上部署的一個(gè)程序去讀取數(shù)據(jù)庫(kù)盛泡,并獲取所有ip信息,啟動(dòng)socket連接夷蚊,發(fā)送相關(guān)業(yè)務(wù)指令构挤。

目前有一個(gè)需求,需要單獨(dú)測(cè)試一個(gè)ip惕鼓,這個(gè)單獨(dú)的ip需要使用另外的程序測(cè)試筋现,其他的ip使用原始生產(chǎn)程序測(cè)試。并且測(cè)試完畢,需要恢復(fù)這個(gè)ip由生產(chǎn)程序接管矾飞。

沒有自動(dòng)化運(yùn)維腳本的時(shí)候一膨,需要把這個(gè)ip拆分出來時(shí),我們需要

  1. 去數(shù)據(jù)庫(kù)修改數(shù)據(jù)(比如:刪除待測(cè)數(shù)據(jù)ip或者置可用狀態(tài)為0)
  2. 停止原生產(chǎn)程序洒沦,并重啟該程序(重啟后會(huì)重新讀取數(shù)據(jù)庫(kù)豹绪,這樣就可以排除需要單獨(dú)測(cè)試的ip)
  3. 啟動(dòng)新程序

在恢復(fù)這個(gè)ip由生產(chǎn)程序接管時(shí),我們需要

  1. 停止新程序
  2. 修改生產(chǎn)數(shù)據(jù)庫(kù)申眼,把這個(gè)ip恢復(fù)
  3. 重新啟動(dòng)生產(chǎn)程序

在反復(fù)操作過程中發(fā)現(xiàn)瞒津,可以使用自動(dòng)運(yùn)維腳本來實(shí)現(xiàn)這種繁瑣又重復(fù)的勞動(dòng)。

運(yùn)維腳本

運(yùn)維腳本分為兩個(gè)括尸,一個(gè)是啟動(dòng)腳本巷蚪,另外一個(gè)是恢復(fù)腳本。

啟動(dòng)腳本如下:

#! /bin/bash

# author: ging
# date: 2020-07-22

ip=$1;
port=$2;
jarname=$3

user=XXX
passwd=XXX
sqlport=3306
host=XXX
autodir=/data/sg/testled
curdate="`date +%Y-%m-%d,%H:%M:%S`";
table_name="t_led_reader_lnk"


# save ori sql info
echo "${curdate}:start back up ori sql info" >> ${autodir}/autostart.txt

if [ -f "${autodir}/${table_name}.sql" ];then
  echo "${curdate}:文件存在濒翻,先刪除屁柏!" >> ${autodir}/autostart.txt
  rm -rf ${autodir}/${table_name}.sql
else
  echo "${curdate}:文件不存在,可以直接導(dǎo)入" >> ${autodir}/autostart.txt
fi


mysqldump -u$user -p$passwd -h$host -P$sqlport sg ${table_name} > ${table_name}.sql

if [ -f "${autodir}/${table_name}.sql" ];then
  echo "${curdate}:導(dǎo)入成功有送!" >> ${autodir}/autostart.txt
else
  echo "${curdate}:導(dǎo)入失斍傲!" >> ${autodir}/autostart.txt
  return;
fi

# delete that line for ip and port
delete_sql="delete from ${table_name} where led_ip='${ip}'"
mysql -u$user -p$passwd -h$host -P$sqlport sg -e "${delete_sql}" -vvv > ${autodir}/autostart-delete.txt

#jurge if delete-success
grep "Query OK, 1 row affected" ${autodir}/autostart-delete.txt >/dev/null
if [ $? -eq 0 ]; then
    echo "${curdate}:刪除成功娶眷!" >> ${autodir}/autostart.txt
else
    echo "${curdate}:刪除失敗啸臀!" >> ${autodir}/autostart.txt
    return;
fi


# stop led-send
ps -ef | grep "java" | grep "/data/sg/ledsend" | awk '{print $2}' | xargs kill -9
if [ $? -eq 0 ]; then
    echo "${curdate}:關(guān)閉程序成功届宠!" >> ${autodir}/autostart.txt
else
    echo "${curdate}:關(guān)閉程序失敗乘粒!" >> ${autodir}/autostart.txt
    return;
fi

# restart led-send
nohup java -XX:-UseAdaptiveSizePolicy -XX:SurvivorRatio=8 -jar /data/sg/ledsend-0.0.1-SNAPSHOT.jar --spring.profiles.active=verify > /data/sg/lslog.txt 2>&1 &

if [ $? -eq 0 ]; then
    echo "${curdate}:重啟程序成功豌注!" >> ${autodir}/autostart.txt
else
    echo "${curdate}:重啟程序失敗灯萍!" >> ${autodir}/autostart.txt
    return;
fi


# start testledjar]
nohup java -jar /data/sg/testled/${jarname} > /data/sg/testled/testled_${jarname}.txt 2>&1 &

if [ $? -eq 0 ]; then
    echo "${curdate}:啟動(dòng)測(cè)試程序成功轧铁!" >> ${autodir}/autostart.txt
else
    echo "${curdate}:重啟測(cè)試程序失敗旦棉!" >> ${autodir}/autostart.txt
    return;
fi

恢復(fù)腳本如下:

#! /bin/bash

# author : ging
# date : 2020-07-22

# stop the test jar

jarname=$1

user=root
passwd=123456
sqlport=3306
host=127.0.0.1
autodir=/data/sg/testled
curdate="`date +%Y-%m-%d,%H:%M:%S`";

ledjarname=$2

ps -ef | grep "java" | grep "${jarname}" | awk '{print $2}' | xargs kill -9
if [ $? -eq 0 ]; then
    echo "${curdate}:關(guān)閉測(cè)試程序成功齿风!" >> ${autodir}/autorecover.txt
else
    echo "${curdate}:關(guān)閉測(cè)試程序失敗绑洛!" >> ${autodir}/autorecover.txt
    return;
fi

#recover the sql
mysql -u$user -p$passwd -h$host -P$sqlport -Dsg < ${autodir}/t_led_reader_lnk.sql > ${autodir}/autostop-recover.txt

# stop led-send
ps -ef | grep "java" | grep "/data/sg/ledsend" | awk '{print $2}' | xargs kill -9
if [ $? -eq 0 ]; then
    echo "${curdate}:關(guān)閉程序成功救斑!" >> ${autodir}/autorecover.txt
else
    echo "${curdate}:關(guān)閉程序失敗真屯!" >> ${autodir}/autorecover.txt
    return;
fi

# restart led-send
nohup java -XX:-UseAdaptiveSizePolicy -XX:SurvivorRatio=8 -jar /data/sg/${ledjarname} --spring.profiles.active=verify > /data/sg/lslog.txt 2>&1 &

if [ $? -eq 0 ]; then
    echo "${curdate}:重啟程序成功脸候!" >> ${autodir}/autorecover.txt
else
    echo "${curdate}:重啟程序失敗!" >> ${autodir}/autorecover.txt
    return;
fi

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末运沦,一起剝皮案震驚了整個(gè)濱河市泵额,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌携添,老刑警劉巖嫁盲,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異薪寓,居然都是意外死亡亡资,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門向叉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锥腻,“玉大人,你說我怎么就攤上這事母谎∈莺冢” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵奇唤,是天一觀的道長(zhǎng)幸斥。 經(jīng)常有香客問我,道長(zhǎng)咬扇,這世上最難降的妖魔是什么甲葬? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮懈贺,結(jié)果婚禮上经窖,老公的妹妹穿的比我還像新娘。我一直安慰自己梭灿,他們只是感情好画侣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著堡妒,像睡著了一般配乱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上皮迟,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天搬泥,我揣著相機(jī)與錄音,去河邊找鬼万栅。 笑死佑钾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的烦粒。 我是一名探鬼主播休溶,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼代赁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了兽掰?” 一聲冷哼從身側(cè)響起芭碍,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎孽尽,沒想到半個(gè)月后窖壕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杉女,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年瞻讽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熏挎。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡速勇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坎拐,到底是詐尸還是另有隱情烦磁,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布哼勇,位于F島的核電站都伪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏积担。R本人自食惡果不足惜陨晶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望帝璧。 院中可真熱鬧珍逸,春花似錦、人聲如沸聋溜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)撮躁。三九已至,卻和暖如春买雾,著一層夾襖步出監(jiān)牢的瞬間把曼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工漓穿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嗤军,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓晃危,卻偏偏與公主長(zhǎng)得像叙赚,于是被迫代替她去往敵國(guó)和親老客。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355