这里主要记录一下工作中遇到的一些常用shell
1.jenkins部署远程tomcat
#/bin/bashexport TOMCAT_HOME_PATH=/usr/local/soft/tomcat-8.5.53cd $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.shecho \"tomcat start success\"
2.向集群节点发送文件
#!/bin/bash#this is shell local system hadoop send it hadoop system#if input arguments is not emptyif [ $# -le 0 ]thenecho \"you input arguments is empty\"exit 1;fi#get filename and dirnamefilename=`basename $1`dirname=`cd -P $(dirname $1);pwd`user=`whoami`for(( host=1;host<=5;host++ ))doecho \"---------------- hadoop$host begin ----------------\"sync -lrv \"${dirname}/${filename} ${user}@hadoop${host}:${dirname}\"#sync -lrv /tmp/a.txt root@hadoop2:/tmpecho \"---------------- hadoop$host end -------------------\"done
3.批量执行命令
#!/bin/bashif [ $# -le 0 ]thenecho \"you input arguments is empty\"exit 1;fifor(( host=1;host<=5;host++ ))doecho \"---------------- hadoop$host begin ----------------\"ssh \"hadoop${host} $@\"echo \"---------------- hadoop$host end -------------------\"done
4.查询系统中最耗性能的服务
查看CPU利用率与负载 top;
查看内存利用率free;
查看CPU与内存占用最高的10个进程top、ps
#!/bin/bashecho \"=======cpu使用情况==========\"ps -eo pid,pcpu,pmem,args --sort=-pcpu | head -n 10echo \"=======内存使用情况==========\"ps -eo pid,pcpu,pmem,args --sort=-pmem | head -n 10
参数说明:
-A所有的进程均显示出来,与 -e 具有同样的效用;
-o 是用户自定义输出格式
–sort=WORD 按照WORD 指定的格式排序,[±]是指升序还是降序排序
5.脚本交互输入参数
比如我们有这样一个脚本demo.sh,需要输入用户名和年龄:
#! /bin/bashread -p \"please enter name:\" nameread -p \"please enter age:\" ageecho 用户名:$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/expectspawn sh demo.shexpect \"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/bashfunction 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; domounted=$(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\"}cpumemorydisktcpecho \"\"
输出结果:
7.发送告警邮件
1.安装邮件 yum install mailx -y
2.配置发件人 vim /etc/mail.rc
添加如下配置:
set [email protected] smtp=smtp.163.comset [email protected] smtp-auth-password=77665set smtp-auth=login
测试 :
echo “邮件内容” | mail -s ‘title’ [email protected]
如果出现smtp-server: 550 User has no permission错误 ,需要[email protected]开启pop3/smtp服务;