加速Java應用開發速度5:使用指令碼自動化日常操作

發表於2013-07-03

在日常開發時,我經常會遇到如下問題:

  • 檢視某個使用者的某些操作資訊(不需要介面,只需要根據固定條件查資料,就是看一下);
  • 需要安裝/部署jar包到本地倉庫/遠端倉庫;
  • 需要release maven專案(即釋出專案的新版本);
  • 在測試時,經常需要重建資料庫和資料;
  • 在不同的環境中安裝同一個maven專案;
  • 部署並執行maven專案;
  • 備份資料庫;
  • 根據系統日誌等做資料分析:如活躍使用者、是否存在異常IP、某個管理員的操作歷史等等;
  • 監控伺服器執行狀態並告警;
  • 清理系統的垃圾檔案;
  • 壓縮日誌及刪除過期的日誌(如只儲存最近3個月的日誌);

等等……

對於如上的一些操作因為是經常使用的一些功能,我們應該使用模板+命令/指令碼自動化來解決,而不是每次重新寫一個,即:

  • 建一個命令檔案,儲存一些經常使用的命令(因為有些命令可能個把月才用一次,記不住啊),這樣下次遇到時把命令複製出來,改一下可變的地方直接執行即可;比如maven中jar包的安裝:mvn install:install-file -DgroupId=* -DartifactId=* -Dversion=* -Dpackaging=jar -Dfile=*
  • 對於一些需要按步驟執行的操作,可以使用一個批處理檔案來儲存,然後下次只需要執行批處理即可,可變部分使用命令列引數傳入即可。

其實如上也是使用了模板的思想,把一些不變的但常用的命令集中儲存或指令碼化,下次遇到相同問題時,只需要把命令或指令碼複製下執行一下即可,可變的部分通過引數傳入。

如果是一些需要固定週期執行的命令/指令碼,可以使用定時排程,如linux的crontab定時排程,如典型的資料庫備份、清理垃圾檔案、壓縮及刪除過期的日誌等等。

很多人可能會覺得命令比視覺化操作要慢,這太絕對化了,任何東西都是相對的,比如:

  • 命令在命令列中,可以使用上下箭頭查詢並執行,如果是反覆執行的話,可能第一次輸入命令是慢的,但是如果要反覆執行呢?(有朋友會說,那我使用快捷鍵呢?這個不在討論之列,此處只是討論命令和視覺化視窗操作)
  • 對於一些任務,如maven化web專案,需要:1、下載最新的程式碼;2、打包;3、部署到tomcat;4、重啟tomcat;如果使用自動化指令碼,只需要一句話即可

相關文章