加速Java應(yīng)用開發(fā)5—用腳本自動(dòng)化日常操作
在日常開發(fā)時(shí),我經(jīng)常會(huì)遇到如下問題:
- 查看某個(gè)用戶的某些操作信息(不需要界面,只需要根據(jù)固定條件查數(shù)據(jù),就是看一下);
- 需要安裝/部署jar包到本地倉(cāng)庫(kù)/遠(yuǎn)程倉(cāng)庫(kù);
- 需要release maven項(xiàng)目(即發(fā)布項(xiàng)目的新版本);
- 在測(cè)試時(shí),經(jīng)常需要重建數(shù)據(jù)庫(kù)和數(shù)據(jù);
- 在不同的環(huán)境中安裝同一個(gè)maven項(xiàng)目;
- 部署并運(yùn)行maven項(xiàng)目;
- 備份數(shù)據(jù)庫(kù);
- 根據(jù)系統(tǒng)日志等做數(shù)據(jù)分析:如活躍用戶、是否存在異常IP、某個(gè)管理員的操作歷史等等;
- 監(jiān)控服務(wù)器運(yùn)行狀態(tài)并告警;
- 清理系統(tǒng)的垃圾文件;
- 壓縮日志及刪除過(guò)期的日志(如只存儲(chǔ)最近3個(gè)月的日志);
等等…………
對(duì)于如上的一些操作因?yàn)槭墙?jīng)常使用的一些功能,我們應(yīng)該使用模板+命令/腳本自動(dòng)化來(lái)解決,而不是每次重新寫一個(gè),即:
- 建一個(gè)命令文件,存儲(chǔ)一些經(jīng)常使用的命令(因?yàn)橛行┟羁赡軅€(gè)把月才用一次,記不住?。?,這樣下次遇到時(shí)把命令復(fù)制出來(lái),改一下可變的地方直接運(yùn)行即可;比如maven中jar包的安裝:mvn install:install-file -DgroupId=* -DartifactId=* -Dversion=* -Dpackaging=jar -Dfile=*
- 對(duì)于一些需要按步驟執(zhí)行的操作,可以使用一個(gè)批處理文件來(lái)存儲(chǔ),然后下次只需要執(zhí)行批處理即可,可變部分使用命令行參數(shù)傳入即可。
其實(shí)如上也是使用了模板的思想,把一些不變的但常用的命令集中存儲(chǔ)或腳本化,下次遇到相同問題時(shí),只需要把命令或腳本復(fù)制下執(zhí)行一下即可,可變的部分通過(guò)參數(shù)傳入。
如果是一些需要固定周期執(zhí)行的命令/腳本,可以使用定時(shí)調(diào)度,如linux的crontab定時(shí)調(diào)度,如典型的數(shù)據(jù)庫(kù)備份、清理垃圾文件、壓縮及刪除過(guò)期的日志等等。
很多人可能會(huì)覺得命令比可視化操作要慢,這太絕對(duì)化了,任何東西都是相對(duì)的,比如:
- 命令在命令行中,可以使用上下箭頭查找并執(zhí)行,如果是反復(fù)執(zhí)行的話,可能***次輸入命令是慢的,但是如果要反復(fù)執(zhí)行呢?(有朋友會(huì)說(shuō),那我使用快捷鍵呢?這個(gè)不在討論之列,此處只是討論命令和可視化窗口操作)
- 對(duì)于一些任務(wù),如maven化web項(xiàng)目,需要:1、下載***的代碼;2、打包;3、部署到tomcat;4、重啟tomcat;如果使用自動(dòng)化腳本,只需要一句話即可