三個shell腳本——備份數(shù)據(jù)和日志

備份日志基本是每一個生產(chǎn)項目必備的功能之一,一般備份日志鸟废,就需要shell腳本悍缠,先附上自己寫的腳本代碼卦绣,隨后再進行簡單講解。
第一個shell腳本飞蚓,bak.sh代碼如下:

#!/bin/sh

. /home/efina/.bash_profile;

cd /home/efina/apache-tomcat-7.0.65/logs;

d=$(date "+%Y%m%d%H%M%S");

sold="catalina.out";

file=${sold}$hjjbr3x;

echo $file;

cp /home/efina/apache-tomcat-7.0.65/logs/catalina.out /home/efina/logback/${file};  #備份

gzip /home/efina/logback/${file}    #壓縮

cat /dev/null > /home/efina/apache-tomcat-7.0.65/logs/catalina.out;

rm  -f /home/efina/apache-tomcat-7.0.65/logs/*.log*;

rm  -f /home/efina/apache-tomcat-7.0.65/logs/*.txt;

rm -f /home/efina/eFina/logs/*.log*

dbuser=efina;
dbpassword=efina;
dbserver=localhost;
dbname=efina;
dbopt=--opt

mysqldump -u$dbuser -p$dbpassword -h$dbserver $dbopt $dbname >  /home/efina/backup/sqlbak/$xtjbrlr.sql;

rm -f /home/efina/backup/sqlbak/*.gz

gzip /home/efina/backup/sqlbak/$rpbl5zl.sql

前面五行命令比較簡單滤港,就是文件名格式,想要備份的日志文件名趴拧,統(tǒng)一為catalina.out20190321102516(日志名+當(dāng)日時間)的格式溅漾,隨后用cp命令備份!

命令演示.png

后面6行著榴,就是簡單的壓縮和刪除添履,最后幾行,是備份數(shù)據(jù)庫的數(shù)據(jù)命令脑又。
第二個shell腳本暮胧,export.sh:

#!/bin/sh


. /home/efina/.bash_profile;

cd /home/efina/print/; 

d=$(date "+%Y%m%d");
dir="/home/efina/print/exportTable/";

rm -f /home/efina/print/exportTable/*;

limitNote="T_PAY_LIMIT_AD_NOTE.txt";
limitFile=${dir}${limitNote};
rm -f ${limitFile};

limitNoteList="T_PAY_LIMIT_AD_NOTE_LIST.txt";
limitListFile=${dir}${limitNoteList};
rm -f ${limitListFile};

limitInit="T_ECFN_LIMIT_INIT.txt";
limitInitFile=${dir}${limitInit};
rm -f ${limitInitFile};

payTransfe="T_PAY_TRANSFE_NOTE.txt";
payTransfeFile=${dir}${payTransfe};
rm -f ${payTransfeFile};

payTransfeList="T_PAY_TRANSFE_NOTE_LIST.txt";
payTransfeListFile=${dir}${payTransfeList};
rm -f ${payTransfeListFile};

areaComp="T_AREA_COMP.txt";
areaCompFile=${dir}${areaComp};
rm -f ${areaCompFile};

ecfnPay="T_ECFN_PAY.txt";
ecfnPayFile=${dir}${ecfnPay};
rm -f ${ecfnPayFile};

ecfnPayList="T_ECFN_PAY_LIST.txt";
ecfnPayListFile=${dir}${ecfnPayList};
rm -f ${ecfnPayListFile};

payBack="T_PAY_BACK.txt";
payBackFile=${dir}${payBack};
rm -f ${payBackFile};

ecfnJrnl="T_ECFN_JRNL.txt";
ecfnJrnlFile=${dir}${ecfnJrnl};
rm -f ${ecfnJrnlFile};

dbuser=efina;
dbpassword=efina;
dbserver=localhost;
dbname=efina;
dbopt=--opt

mysql -u$dbuser -p$dbpassword <<EOF ;
use efina;

SELECT * INTO OUTFILE '${limitFile}' CHARACTER SET GBK FIELDS TERMINATED BY '|'  FROM T_PAY_LIMIT_AD_NOTE;
SELECT * INTO OUTFILE '${limitListFile}' CHARACTER SET GBK  FIELDS TERMINATED BY '|'  FROM T_PAY_LIMIT_AD_NOTE_LIST;
SELECT * INTO OUTFILE '${limitInitFile}' CHARACTER SET GBK  FIELDS TERMINATED BY '|'  FROM T_ECFN_LIMIT_INIT;
SELECT * INTO OUTFILE '${payTransfeFile}'  CHARACTER SET GBK  FIELDS TERMINATED BY '|'  FROM T_PAY_TRANSFE_NOTE;
SELECT * INTO OUTFILE '${payTransfeListFile}' CHARACTER SET GBK  FIELDS TERMINATED BY '|'  FROM T_PAY_TRANSFE_NOTE_LIST;
SELECT * INTO OUTFILE '${areaCompFile}' CHARACTER SET GBK  FIELDS TERMINATED BY '|'  FROM T_AREA_COMP;
SELECT * INTO OUTFILE '${ecfnPayFile}' CHARACTER SET GBK  FIELDS TERMINATED BY '|'  FROM T_ECFN_PAY;
SELECT * INTO OUTFILE '${payBackFile}' CHARACTER SET GBK  FIELDS TERMINATED BY '|'  FROM T_PAY_BACK;
SELECT * INTO OUTFILE '${ecfnJrnlFile}' CHARACTER SET GBK   FIELDS TERMINATED BY '|'  FROM T_ECFN_JRNL;
SELECT * INTO OUTFILE '${ecfnPayListFile}' CHARACTER SET GBK  FIELDS TERMINATED BY '|'  FROM T_ECFN_PAY_LIST;

這兩個shell腳本都比較簡單,也容易理解问麸,寫完shell腳本以后叔壤,該如何執(zhí)行呢?

最常見的辦法口叙,就是通過Linux系統(tǒng)的定時任務(wù)Crontab命令來控制炼绘。由于Linux 系統(tǒng)是由 cron (crond) 這個系統(tǒng)服務(wù)來控制的(系統(tǒng)服務(wù)是默認(rèn)啟動的,用于Linux 系統(tǒng)原本的計劃性工作)妄田。所以俺亮,使用者自己也可以根據(jù)該命令(crontab 命令)設(shè)置自己的計劃任務(wù)(輸入cronttab -e即可顯示crontab 命令配置):

crontab命令.jpg

補充:什么是crond?

crond 等同于windows下的計劃任務(wù)疟呐,是Linux用來周期性的執(zhí)行某種任務(wù)的一個守護進程脚曾,當(dāng)操作系統(tǒng)安裝完后,默認(rèn)會安裝此服務(wù)工具且自動啟動crond進程启具,crond進程每分鐘會定期檢查是否有要執(zhí)行的任務(wù)本讥,如果有要執(zhí)行的任務(wù),則自動執(zhí)行該任務(wù)鲁冯。

crontab文件格式共分為六個字段拷沸,前五段是時間設(shè)定段,第六段是要執(zhí)行的命令段:

minute hour day month week command

比如:
30 23 * * * /home/tomcat/tmp/export.sh
10 23 * * * /home/tomcat/tmp/bak.sh

從左到右依次代表:

minute: 表示分鐘薯演,可以是從0到59之間的任何整數(shù)撞芍。

hour:表示小時,可以是從0到23之間的任何整數(shù)跨扮。

day:表示日期序无,可以是從1到31之間的任何整數(shù)验毡。

month:表示月份,可以是從1到12之間的任何整數(shù)帝嗡。

week:表示星期幾晶通,可以是從0到7之間的任何整數(shù),這里的0或7代表星期日哟玷。

command:要執(zhí)行的命令狮辽,一般是自己編寫的Shell腳本文件。

Linux下的任務(wù)調(diào)度分為兩類碗降,系統(tǒng)任務(wù)調(diào)度和用戶任務(wù)調(diào)度隘竭。

系統(tǒng)任務(wù)調(diào)度:系統(tǒng)周期性所要執(zhí)行的工作塘秦,比如寫緩存數(shù)據(jù)到硬盤讼渊、日志清理等。在/etc目錄下的crontab文件就是系統(tǒng)任務(wù)調(diào)度的配置文件尊剔,/etc/crontab文件包括下面幾行:

cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=HOME=/

# run-parts

51 * * * * root run-parts /etc/cron.hourly

24 7 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

用戶任務(wù)調(diào)度:用戶定期要執(zhí)行的工作爪幻,比如用戶數(shù)據(jù)備份、定時郵件提醒等须误。用戶可以使用 crontab 工具來定制自己的計劃任務(wù)挨稿。所有用戶定義的crontab 文件都被保存在 /var/spool/cron目錄中。其文件名與用戶名一致京痢。

使用者權(quán)限文件:

  • 文件1:/etc/cron.deny
    該文件中所列用戶不允許使用crontab命令

  • 文件2:/etc/cron.allow
    該文件中所列用戶允許使用crontab命令

  • 文件3:/var/spool/cron/
    所有用戶crontab文件存放的目錄,以用戶名命名

每次測試環(huán)境測試時奶甘,ps進程、kill進程祭椰、日志跟蹤臭家,很是麻煩,所以就有了第三個shell腳本——重啟服務(wù)方淤。該進程比較簡單钉赁,如下:

ps -ef|grep tomcat|grep -v grep|cut -c 9-15|xargs kill -9
#pskill tomcat
sleep 5
~/tomcat7.0.93/bin/startup.sh
tail -f ~/tomcat7.0.93/logs/catalina.out

然后把該進程名配置進環(huán)境變量,輸入ls -a即可看到.bash_profile文件携茂,加入:

#PATH=$HOME/ .sh

加入環(huán)境變量以后你踩,source一下(如果執(zhí)行權(quán)限不足 需授權(quán))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市讳苦,隨后出現(xiàn)的幾起案子带膜,更是在濱河造成了極大的恐慌,老刑警劉巖鸳谜,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钱慢,死亡現(xiàn)場離奇詭異,居然都是意外死亡卿堂,警方通過查閱死者的電腦和手機束莫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門懒棉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人览绿,你說我怎么就攤上這事策严。” “怎么了饿敲?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵妻导,是天一觀的道長。 經(jīng)常有香客問我怀各,道長倔韭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任瓢对,我火速辦了婚禮寿酌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘硕蛹。我一直安慰自己醇疼,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布法焰。 她就那樣靜靜地躺著秧荆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪埃仪。 梳的紋絲不亂的頭發(fā)上乙濒,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音卵蛉,去河邊找鬼颁股。 笑死,一個胖子當(dāng)著我的面吹牛毙玻,可吹牛的內(nèi)容都是我干的豌蟋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼桑滩,長吁一口氣:“原來是場噩夢啊……” “哼梧疲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起运准,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤幌氮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胁澳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體该互,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年韭畸,在試婚紗的時候發(fā)現(xiàn)自己被綠了宇智。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔓搞。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖随橘,靈堂內(nèi)的尸體忽然破棺而出喂分,到底是詐尸還是另有隱情,我是刑警寧澤机蔗,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布蒲祈,位于F島的核電站,受9級特大地震影響萝嘁,放射性物質(zhì)發(fā)生泄漏梆掸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一牙言、第九天 我趴在偏房一處隱蔽的房頂上張望酸钦。 院中可真熱鬧,春花似錦嬉挡、人聲如沸钝鸽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至因谎,卻和暖如春基括,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背财岔。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工风皿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人匠璧。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓桐款,卻偏偏與公主長得像,于是被迫代替她去往敵國和親夷恍。 傳聞我的和親對象是個殘疾皇子魔眨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355