常用Shell脚本 tomcat监控/mysql备份/jar文件启动停止重启
2019-07-06
阅读 {{counts.readCount}}
评论 {{counts.commentCount}}
## 常用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 &
```