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