常用shell脚本 tomcat监控/mysql备份/jar文件启动停止重启 等等 home 编辑时间 2019/06/28 ![](/api/file/getImage?fileId=5d281ecc16199b0683003549) ## 常用shell脚本 **1. tomcat监控 自动重启 注意tomcat路径要根据实际情况更改** ```shell #!/bin/sh # 获取tomcat进程ID 注意tomcat路径要根据实际情况更改 TomcatID=$(ps -ef |grep '/root/tomcat/bin'|grep -v 'grep'| awk '{print $2}') # tomcat启动程序 注意tomcat路径要根据实际情况更改 StartTomcat=/root/tomcat/bin/startup.sh # 定义要监控的页面地址 WebUrl=http://localhost:8080 # 日志输出 TomcatMonitorLog=/root/logs/tomcatMonitor.log # 监控方法主体 Monitor() { echo "[start]---[$(date +'%F %H:%M:%S')]---" if test $TomcatID ;then #这里判断Tomcat进程是否存在 # 检测是否启动成功(成功的话页面会返回状态"200") TomcatServiceCode=$(curl -s -m 1000 --connect-timeout 1000 $WebUrl -w %{http_code}) if [[ $TomcatServiceCode -eq 200 || $TomcatServiceCode -eq 000 ]];then echo "[success]tomcatid:$TomcatID,code:$TomcatServiceCode" else echo "[error]tomcat页面出错,状态码为$TomcatServiceCode" echo "[error]页面访问出错,开始重启tomcat" kill -9 $TomcatID # 杀掉原tomcat进程 sleep 5 #rm -rf $TomcatCache # 清理tomcat缓存 $StartTomcat fi else echo "[error]tomcat进程不存在" echo "[info]$StartTomcat 启动中" #rm -rf $TomcatCache $StartTomcat fi echo "[end]---[$(date +'%F %H:%M:%S')]---" } # 清理日志文件方法 cleanLog() { if ! [ -f $TomcatMonitorLog ];then echo "file not exist!" exit 1 fi # 大于10M 自动清空日志文件 if test `ls -l $TomcatMonitorLog|awk '{print $5}'` -gt $((1024 * 1024 * 10)) then echo "[clean]---[$(date +'%F %H:%M:%S')]---" > $TomcatMonitorLog # 清空 fi } # 超过10M清空日志 cleanLog # 执行监控脚本 Monitor >> $TomcatMonitorLog ``` **2. MySql定期自动备份 需要先配置账号密码到my.cnf中** ```shell #!/bin/bash # mysql 自动备份、压缩、加密 # 文件名为 database_日期 backupDatabase=database # 代表数据库名_年月日 也可以根据需要修改 %Y%m%d%H%M%S fileName=${backupDatabase}_`date +%Y%m%d` # 存放备份的目录,可以是任意位置,先创建并赋权 baseDir=/root/backup/files/mysql/${backupDatabase}/ # 备份数据库 mysqldump --defaults-extra-file=/etc/my.cnf ${backupDatabase} > ${baseDir}${fileName}.sql # 加密压缩 大写P 必须填入你自己想的压缩密码,解压时需要用到 tar -zcPvf - ${baseDir}${fileName}.sql | openssl des3 -salt -k 你的自定义的压缩文件密码 -out ${baseDir}${fileName}.sql.tar.gz # 删除刚刚备份的sql文件,留下压缩的 rm -f ${baseDir}${fileName}.sql; # 删除90天前备份的数据 find ${baseDir} -mtime +90 -name "${backupDatabase}*.tar.gz" -exec rm -rf {} \; ``` **3. 启动/停止/重启 Jar文件的应用 xxx改为你的项目路径或文件名** 启动 ```shell #!/bin/bash # 启动脚本,nohup方式后台运行jar包,其中参数需要根据实际情况调敿# 参数说明如下 # -Xms128m JVM初始分配的堆内存 # -Xmx1024m JVM最大允许分配的堆内孿# /root/java/xxx-1.0.0.jar # --spring.profiles.active=prod 运行application-prod.properties # > logs/api.out 实时输出控制台信息到指定文件 nohup java -jar -Xms128m -Xmx1024m /root/web/java/xxx/xxx-1.0.0.jar --spring.profiles.active=prod > logs/xxx.out & ``` 停止 ```shell #!/bin/bash # 停止脚本,其中 xxx-1.0.0.jar 需要替换成实际文件名,而且尽量确保名字唯一性,防止错杀 xxxID=$(ps -ef |grep 'xxx-1.0.0.jar'|grep -v 'grep'| awk '{print $2}') # run # 判断进程是否存在 if test $xxxID ;then # 杀死进程 kill -9 $xxxID echo "[SUCCESS] 进程已杀死" else # 提示不进程不存在 echo "[ERROR] 进程不存在" fi ``` 重启 ```shell #!/bin/bash # 重启脚本,实际上就是结合了前面2个脚本 xxxID=$(ps -ef |grep 'xxx-1.0.0.jar'|grep -v 'grep'| awk '{print $2}') # run # 判断进程是否存在 if test $xxxID ;then # 杀死进程 kill -9 $xxxID echo "[SUCCESS] 进程已杀死" else # 提示不进程不存在 echo "[ERROR] 进程不存在" fi sleep 5 nohup java -jar -Xms128m -Xmx1024m /root/web/java/xxx/xxx-1.0.0.jar --spring.profiles.active=prod > logs/xxx.out & ``` 送人玫瑰,手留余香 赞赏 Wechat Pay Alipay Nginx 允许子域名通配符跨域 以及 防盗链 终于脱坑 Nginx 指定URL或静态页面 实现用户登录 用户名密码验证