常用shell脚本

1. tomcat监控 自动重启 注意tomcat路径要根据实际情况更改

  1. #!/bin/sh
  2. # 获取tomcat进程ID 注意tomcat路径要根据实际情况更改
  3. TomcatID=$(ps -ef |grep '/root/tomcat/bin'|grep -v 'grep'| awk '{print $2}')
  4. # tomcat启动程序 注意tomcat路径要根据实际情况更改
  5. StartTomcat=/root/tomcat/bin/startup.sh
  6. # 定义要监控的页面地址 
  7. WebUrl=http://localhost:8080
  8. # 日志输出
  9. TomcatMonitorLog=/root/logs/tomcatMonitor.log
  10. # 监控方法主体
  11. Monitor()
  12. {
  13. echo "[start]---[$(date +'%F %H:%M:%S')]---"
  14. if test $TomcatID ;then #这里判断Tomcat进程是否存在
  15. # 检测是否启动成功(成功的话页面会返回状态"200")
  16. TomcatServiceCode=$(curl -s -m 1000 --connect-timeout 1000 $WebUrl -w %{http_code})
  17. if [[ $TomcatServiceCode -eq 200 || $TomcatServiceCode -eq 000 ]];then
  18. echo "[success]tomcatid:$TomcatID,code:$TomcatServiceCode"
  19. else
  20. echo "[error]tomcat页面出错,状态码为$TomcatServiceCode"
  21. echo "[error]页面访问出错,开始重启tomcat"
  22. kill -9 $TomcatID # 杀掉原tomcat进程
  23. sleep 5
  24. #rm -rf $TomcatCache # 清理tomcat缓存
  25. $StartTomcat
  26. fi
  27. else
  28. echo "[error]tomcat进程不存在"
  29. echo "[info]$StartTomcat 启动中"
  30. #rm -rf $TomcatCache
  31. $StartTomcat
  32. fi
  33. echo "[end]---[$(date +'%F %H:%M:%S')]---"
  34. }
  35. # 清理日志文件方法
  36. cleanLog()
  37. {
  38. if ! [ -f $TomcatMonitorLog ];then
  39. echo "file not exist!"
  40. exit 1
  41. fi
  42. # 大于10M 自动清空日志文件
  43. if test `ls -l $TomcatMonitorLog|awk '{print $5}'` -gt $((1024 * 1024 * 10))
  44. then
  45. echo "[clean]---[$(date +'%F %H:%M:%S')]---" > $TomcatMonitorLog # 清空
  46. fi
  47. }
  48. # 超过10M清空日志
  49. cleanLog
  50. # 执行监控脚本
  51. Monitor >> $TomcatMonitorLog

2. MySql定期自动备份 需要先配置账号密码到my.cnf中

  1. #!/bin/bash
  2. # mysql 自动备份、压缩、加密
  3. # 文件名为 database_日期
  4. backupDatabase=database
  5. # 代表数据库名_年月日 也可以根据需要修改 %Y%m%d%H%M%S
  6. fileName=${backupDatabase}_`date +%Y%m%d`
  7. # 存放备份的目录,可以是任意位置,先创建并赋权
  8. baseDir=/root/backup/files/mysql/${backupDatabase}/
  9. # 备份数据库
  10. mysqldump --defaults-extra-file=/etc/my.cnf ${backupDatabase} > ${baseDir}${fileName}.sql
  11. # 加密压缩 大写P 必须填入你自己想的压缩密码,解压时需要用到
  12. tar -zcPvf - ${baseDir}${fileName}.sql | openssl des3 -salt -k 你的自定义的压缩文件密码 -out ${baseDir}${fileName}.sql.tar.gz
  13. # 删除刚刚备份的sql文件,留下压缩的
  14. rm -f ${baseDir}${fileName}.sql;
  15. # 删除90天前备份的数据
  16. find ${baseDir} -mtime +90 -name "${backupDatabase}*.tar.gz" -exec rm -rf {} \;

3. 启动/停止/重启 Jar文件的应用 xxx改为你的项目路径或文件名
启动

  1. #!/bin/bash
  2. # 启动脚本,nohup方式后台运行jar包,其中参数需要根据实际情况调敿# 参数说明如下
  3. # -Xms128m JVM初始分配的堆内存
  4. # -Xmx1024m JVM最大允许分配的堆内孿# /root/java/xxx-1.0.0.jar
  5. # --spring.profiles.active=prod 运行application-prod.properties
  6. # > logs/api.out 实时输出控制台信息到指定文件
  7. nohup java -jar -Xms128m -Xmx1024m /root/web/java/xxx/xxx-1.0.0.jar --spring.profiles.active=prod > logs/xxx.out &

停止

  1. #!/bin/bash
  2. # 停止脚本,其中 xxx-1.0.0.jar 需要替换成实际文件名,而且尽量确保名字唯一性,防止错杀
  3. xxxID=$(ps -ef |grep 'xxx-1.0.0.jar'|grep -v 'grep'| awk '{print $2}')
  4. # run
  5. # 判断进程是否存在
  6. if test $xxxID ;then
  7. # 杀死进程
  8. kill -9 $xxxID
  9. echo "[SUCCESS] 进程已杀死"
  10. else
  11. # 提示不进程不存在
  12. echo "[ERROR] 进程不存在"
  13. fi

重启

  1. #!/bin/bash
  2. # 重启脚本,实际上就是结合了前面2个脚本
  3. xxxID=$(ps -ef |grep 'xxx-1.0.0.jar'|grep -v 'grep'| awk '{print $2}')
  4. # run
  5. # 判断进程是否存在
  6. if test $xxxID ;then
  7. # 杀死进程
  8. kill -9 $xxxID
  9. echo "[SUCCESS] 进程已杀死"
  10. else
  11. # 提示不进程不存在
  12. echo "[ERROR] 进程不存在"
  13. fi
  14. sleep 5
  15. nohup java -jar -Xms128m -Xmx1024m /root/web/java/xxx/xxx-1.0.0.jar --spring.profiles.active=prod > logs/xxx.out &