这里主要记录一下工作中遇到的一些常用shell
1.jenkins部署远程tomcat
#/bin/bash
export TOMCAT_HOME_PATH=/usr/local/soft/tomcat-8.5.53
cd $TOMCAT_HOME_PATH
#停服;
pid=`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`
`kill -9 $pid`
#备份war包
date_now=`date '+%Y%m%d%H%M%S'`
`cp ./webapps/demo-0.0.1-SNAPSHOT.jar ./webapps_back/demo-0.0.1-SNAPSHOT.jar_$date_now`
`cp /usr/local/package/demo-0.0.1-SNAPSHOT.jar ./webapps/`
./bin/startup.sh
echo "tomcat start success"
2.向集群节点发送文件
#!/bin/bash
#this is shell local system hadoop send it hadoop system
#if input arguments is not empty
if [ $# -le 0 ]
then
echo "you input arguments is empty"
exit 1;
fi
#get filename and dirname
filename=`basename $1`
dirname=`cd -P $(dirname $1);pwd`
user=`whoami`
for(( host=1;host<=5;host++ ))
do
echo "---------------- hadoop$host begin ----------------"
sync -lrv "${dirname}/${filename} ${user}@hadoop${host}:${dirname}"
#sync -lrv /tmp/a.txt root@hadoop2:/tmp
echo "---------------- hadoop$host end -------------------"
done
3.批量执行命令
#!/bin/bash
if [ $# -le 0 ]
then
echo "you input arguments is empty"
exit 1;
fi
for(( host=1;host<=5;host++ ))
do
echo "---------------- hadoop$host begin ----------------"
ssh "hadoop${host} $@"
echo "---------------- hadoop$host end -------------------"
done
4.查询系统中最耗性能的服务
查看CPU利用率与负载 top;
查看内存利用率free;
查看CPU与内存占用最高的10个进程top、ps
#!/bin/bash
echo "=======cpu使用情况=========="
ps -eo pid,pcpu,pmem,args --sort=-pcpu | head -n 10
echo "=======内存使用情况=========="
ps -eo pid,pcpu,pmem,args --sort=-pmem | head -n 10
参数说明:
-A所有的进程均显示出来,与 -e 具有同样的效用;
-o 是用户自定义输出格式
–sort=WORD 按照WORD 指定的格式排序,[±]是指升序还是降序排序
5.脚本交互输入参数
比如我们有这样一个脚本demo.sh,需要输入用户名和年龄:
#! /bin/bash
read -p "please enter name:" name
read -p "please enter age:" age
echo 用户名:$name,年龄:$age
第一种方法:
新建一个文本,里面包含有name与age的值:
cat data.txt
rose 18
sh demo.sh < data.txt
第二种方法:
利用管道,让前个命令的输出作为后个命令的输入:
echo -e "rose\n18\n" | sh test.sh
第三种方法:
利用expect完成交互自动化,它是一个工具,如果没有此命令需要安装一下:
yum install expect.x86_64
安装完成之后,编程如下脚本:vim expect_demo.sh
#! /usr/bin/expect
spawn sh demo.sh
expect "please enter name:"
send "tom\n"
expect "please enter age:"
send "18\n"
expect off
运行命令可用:
expect expect_demo.sh
解释:
/usr/bin/expect:这个是选用解释器的意思
spawn: 指定需要将哪个命令自动化
expect:需要等待的消息
send:是要发送的命令
expect off:指明命令交互结束
6.查看服务利用率
查看CPU、内存、硬件、网络利用率;
#!/bin/bash
function cpu(){
util=$(vmstat | awk '{if(NR==3)print $13+$14}')
iowait=$(vmstat | awk '{if(NR==3)print $16}')
echo "====================CPU===================="
echo "CPU使用率:${util}%"
echo "等待磁盘IO使用率:${iowait}%"
}
function memory(){
total=$(free -m | awk '{if(NR==2)printf "%.1f", $2/1024}')
used=$(free -m | awk '{if(NR==2)printf "%.1f",($2-$NF)/1024}')
valiable=$(free -m | awk '{if(NR==2)printf "%.1f",$NF/1024}')
echo "====================内存==================="
echo "总内存:${total}G"
echo "已使用:${used}G"
echo "可用内存:${valiable}G"
}
function disk(){
fs=$(df -h | awk '/^\/dev/{print $1}')
echo "====================磁盘==================="
for p in $fs; do
mounted=$(df -h | awk -v p=$p '$1==p{print $NF}')
size=$(df -h | awk -v p=$p '$1==p{print $2}')
used=$(df -h | awk -v p=$p '$1==p{print $3}')
used_percent=$(df -h | awk -v p=$p '$1==p{print $5}')
echo "挂载点:$mounted 总大小:$size 已用:$used 使用率:$used_percent"
done
}
function tcp(){
summery=$(netstat -antp | awk '{a[$6]++}END{for(i in a)printf i":"a[i]" "}')
echo "====================TCP==================="
echo "$summery"
}
cpu
memory
disk
tcp
echo ""
输出结果:
7.发送告警邮件
1.安装邮件 yum install mailx -y
2.配置发件人 vim /etc/mail.rc
添加如下配置:
set from=sxl1362@163.com smtp=smtp.163.com
set smtp-auth-user=sxl1362@163.com smtp-auth-password=77665
set smtp-auth=login
测试 :
echo “邮件内容” | mail -s ‘title’ 1362366259@qq.com
如果出现smtp-server: 550 User has no permission错误 ,需要sxl1362@163.com开启pop3/smtp服务;