加速Java应用开发速度5——使用脚本自动化日常操作——仅作个人记录学习(转载)
在日常开发时,我经常会遇到如下问题:
- 查看某个用户的某些操作信息(不需要界面,只需要根据固定条件查数据,就是看一下);
- 需要安装/部署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;如果使用自动化脚本,只需要一句话即可