1.查询系统基础情况脚本

#!/bin/bash
# 系统状态查询脚本
# 输出系统基本信息
#
# 系统版本
SYSTEM_VERSION=`cat /etc/redhat-release`
# 主机名
HOSTNAME=`hostname`
# 网卡名称
DEV="ens32"
# IP地址
IP_ADDR=`ifconfig $DEV | grep -v inet6 | grep inet | awk '{print $2}'`
# MAC地址
MAC_ADDR=`ifconfig $DEV | awk '/ether/{print $2}'`
# 内核版本
KERNEL_VERSION=`uname -a | awk '{print $3}'`
# CPU版本
CPU_VERSION=`cat /proc/cpuinfo | grep -n '^model name' | awk -F":" '{print $3 }'|sed 's/^ //g'`
# 当前时间
DATE=`date`
# 启动时间
DATE_START=`date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"`
#
echo -e "\n+--------- $DATE --------+\n"
echo -e "主机名:\n$HOSTNAME\n"
echo -e "系统版本:\n$SYSTEM_VERSION\n"
echo -e "内核版本:\n$KERNEL_VERSION\n"
echo -e "CPU版本:\n$CPU_VERSION\n"
echo -e "系统IP:\n$DEV $IP_ADDR\n"
echo -e "系统MAC:\n$DEV $MAC_ADDR\n"
echo -e "启动时间:\n$DATE_START\n"
#---------------------------
# 系统负载
# uptime
#---------------------------
CPU_NUM=`cat /proc/cpuinfo | grep processor | awk -F":" '{print $2}' | wc -l`
Load=`uptime | awk -F"average:" '{print $2}' | awk -F"," '{print "<__ 系统负载 __> --> ""CPU数量:'"$CPU_NUM"'""\t1分钟:"$1"\t5分钟:"$2"\t15分钟:"$3}'`
echo -e "\n$Load\n"
#---------------------------
# CPU状态
# vmstat
#---------------------------
CPU_CHECK=`vmstat | awk '{print NR $0}' | awk '/^3/{print "<__ CPU状态 __> --> ""CPU使用:"$14"%\t""CPU空闲:"$16"%"}'`
echo -e "$CPU_CHECK\n"
#---------------------------
# 内存状态
# free
#---------------------------
MEMORY=`free -mh | awk ' /^Mem/{print "<__ 内存状态 __> --> ""内存总量:"$2"\t已用内存:"$3"\t剩余内存:"$4"\t可用内存:"$7}'`
echo -e "$MEMORY\n"
#--------------------------
# 磁盘使用
# df
#--------------------------
DISK=`df -h | grep -n '/$' | awk '{print "<__ 磁盘使用 __> --> ""磁盘容量:"$2"\t已用容量:"$3"\t可用容量:"$4}'`
echo -e "$DISK\n"
#---------------------------
# 进程统计
# top
#---------------------------
PROCESS=`top -bn1 | awk '/Tasks:/{print $0}' | awk '{print "<__ 进程统计 __> --> ""进程总数:"$2"\t运行进程:"$4"\t休眠进程:"$6"\t停止进程:"$8"\t僵尸进程:"$10}'`
echo -e "$PROCESS\n"
#---------------------------
# 磁盘IO使用情况
# sar
#---------------------------
IO=`sar -b | grep -n '^[^0-9]' | awk '{print NR $0}'| awk '/^2/{print"<__ 磁盘读写 __> --> ""读/秒:"$5" bytes""\t写/秒:"$6" bytes"}'`
echo -e "$IO\n"
#---------------------------
# 网卡流量使用情况
# sar
#---------------------------
NETWORK=`sar -n DEV | grep $DEV | grep -n '^[^0-9]'| awk '{print "<__ 网卡流量 __> --> ""网卡名:"$2"\t收包/秒:"$3"\t发包/秒:"$4"\t下载/秒:"$5" Bytes"" 上传/秒:"$6" Bytes"}'`
echo -e "$NETWORK\n"

system_check.sh

[root@localhost shell]# sh system_check.sh 

+---------  2018年 04月 27日 星期五 11:00:55 CST  --------+

主机名:
localhost.localdomain 系统版本:
CentOS Linux release 7.4.1708 (Core) 内核版本:
3.10.0-693.el7.x86_64 CPU版本:
Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz
Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz 系统IP:
ens32 192.168.1.159 系统MAC:
ens32 00:0c:29:b0:e8:12 启动时间:
2018-04-19 09:12:48 <__ 系统负载 __> --> CPU数量:2 1分钟: 0.12 5分钟: 0.04 15分钟: 0.05 <__ CPU状态 __> --> CPU使用:0% CPU空闲:100% <__ 内存状态 __> --> 内存总量:3.7G 已用内存:181M 剩余内存:2.8G 可用内存:3.2G <__ 磁盘使用 __> --> 磁盘容量:50G 已用容量:1.3G 可用容量:49G <__ 进程统计 __> --> 进程总数:116 运行进程:1 休眠进程:115 停止进程:0 僵尸进程:0 <__ 磁盘读写 __> --> 读/秒:0.00 bytes 写/秒:0.93 bytes <__ 网卡流量 __> --> 网卡名:ens32 收包/秒:10.74 发包/秒:1.60 下载/秒:0.65 Bytes 上传/秒:0.10 Bytes

输出案例


 2.查看目录下包含子目录的所有指定静态文件,测试响应请求时间。

#!/bin/bash
# Nginx代理访问
#Dname="http://192.168.1.10:8081"
# Tomcat代理访问
Dname="http://192.168.1.10:8080"
# 指定目录
DIR="/upload/"
function request(){
list=`ls $DIR`
cd $DIR
for i in $list;do
if test -d $i;then
DIR=$i
request $DIR
else
if echo $i | grep .png >/dev/null 2>&1 || echo $i | grep .jpg >/dev/null 2>&1;then
Fname=$i
URL=`pwd`
# 求出静态文件响应时间
Total=`curl -o /dev/null -s -w '%{time_total}\n' $Dname$URL/$Fname`
# 求出文件大小
Filesize=`du -sh $URL/$Fname 2>/dev/null | awk -F' ' '{print $1}'`
echo -e "资源URL:$URL/$Fname 大小:$Filesize 响应时间:\033[31;31m$Total\033[0m"
fi
fi
done
cd ../
} request $DIR

request.sh

资源URL:/upload/app_port/H5/About_us.jpg 大小:60K 响应时间:0.016
资源URL:/upload/org_cover/2018-08-08-2005-32-43/f2394d49adff4382829e289f8b8bdc0e/1.jpg 大小:60K 响应时间:0.015
资源URL:/upload/org_cover/2018-08-11_13-53-46/a35bfc924d464736884eb196dafa3884/首页Banner-1.jpg 大小:11M 响应时间:0.004
资源URL:/upload/org_cover/2018-08-11_13-55-33/188e03a5122946c8919202b8e5ba8c61/轮播图——春晚新(1).jpg 大小:1.3M 响应时间:0.004
资源URL:/upload/org_cover/2018-08-11_14-22-58/db213c3b3a3944a3aa64771bc88952e1/2222.png 大小:1.8M 响应时间:0.094
资源URL:/upload/org_cover/2018-08-13_14-11-02/03fe045379c9445fae8bf7f1bdcf7535/无标题1.png 大小:2.6M 响应时间:0.004
资源URL:/upload/org_cover/2018-08-13_14-39-55/2599ba229a94422f9a4401ad30dd53b6/d.png 大小:428K 响应时间:0.040
资源URL:/upload/org_cover/2018-08-13_14-43-04/b27aab0a8be0447596657274698b1a3a/k.jpg 大小:1.6M 响应时间:0.080
资源URL:/upload/org_cover/2018-08-13_20-24-48/2b881550056f4735b183c85f9b904c11/20180806101549.jpg 大小:324K 响应时间:0.034
资源URL:/upload/org_cover/2018-08-22_13-33-55/faa95902d9144d9f95b084d1e8344720/无标题3.png 大小:556K 响应时间:0.004
资源URL:/upload/org_cover/2018-08-29_14-30-26/8b0df630ec0e4bf185383c9a9181c33b/微信图片_20180820164143.png 大小:36K 响应时间:0.004
资源URL:/upload/org_images/2018-08-11_13-56-43/38596e1b6fd9499cb057972148c6634a/主播招募banner.jpg 大小:200K 响应时间:0.004
资源URL:/upload/org_images/2018-08-11_13-56-43/648db3a1a6874671bd837b33f3271b3f/建党.jpg 大小:320K 响应时间:0.004
资源URL:/upload/org_images/2018-08-11_13-56-43/6ac903e3a0114dddb57913f114eb6854/首页Banner-2.jpg 大小:324K 响应时间:0.004
资源URL:/upload/org_images/2018-08-11_13-56-43/6c4aaf4227e04d9991ff2f526e4ea51e/首页Banner-3.jpg 大小:396K 响应时间:0.004
资源URL:/upload/org_images/2018-08-11_13-56-43/98bc613d55764626a67ae54e3d889988/首页Banner-1.jpg 大小:11M 响应时间:0.004
资源URL:/upload/org_images/2018-08-11_13-56-43/9cf0130084fe4702a9ad74cf7f4bcb9e/首页Banner-4.jpg 大小:332K 响应时间:0.004
资源URL:/upload/org_images/2018-08-11_13-56-43/bf34729ef37b474888721b77c8baca3f/网站banner1.jpg 大小:796K 响应时间:0.004
资源URL:/upload/org_images/2018-08-11_13-56-43/dacc1c8f298c4e05af4b3a13c743dcd9/千金答人1.jpg 大小:248K 响应时间:0.004

输出案例


3.创建Linux回收站、每3天自动清空

##############
# 添加自定义命令
# vim /etc/bashrc
# alias rm='sh /root/changerm.sh'
##############
#!/bin/bash
trash_dir=/trash/`date +%Y%m%d`
if [ ! -d ${trash_dir} ];then
mkdir -p ${trash_dir}
fi for i in $*
do
suffix=`date "+%H%M%S"`
if [ ! -d "${i}" ]&&[ ! -f "${i}" ];then
if [[ "${i}" != "-rf" && "${i}" != "-f" ]];then
echo "[${i}] do not exist"
fi
else
file_name=`basename $i`
mv ${i} ${trash_dir}/${file_name}_${suffix}_${RANDOM}
echo "[${i}] delete completed !!!"
fi
done

changerm.sh

###########
# 添加计划任务
# crontab -e
# 00 22 * * * sh /root/cleartrash.sh
###########
#!/bin/bash
trashdir=/trash
cd ${trashdir}
# 删除该目录下三天以上的文件
find ./ -mtime +3 -exec 'rm' -rf {} \;

cleartrash.sh


4.mysq备份脚本,全量备份,增量备份需手动开启后在开启删除开关

#!/bin/bash
# @author:kevin.xiang
# create -e
# 0 0 * * 0 bash /mysql
##########################
DATA=`date +%Y%m%d%H-%T`
BIN_DIR="/usr/bin/"
BACKUP_DIR="/backup/"
LOG_DIR="/var/log/mariadb/"
DB_IP="localhost"
DB_ROOT="root"
DB_PASSWD="xiangsikai"
# Binary log deletion. 0 on | 1 off
Flag=1 #-- Full amount of backup
function backup_all() {
sudo ${BIN_DIR}mysqldump -h${DB_IP} -u${DB_ROOT} -p${DB_PASSWD} --all-databases > ${BACKUP_DIR}mysqlbackup_${DATA}.sql
if [ $? == 0 ];then
sudo ${BIN_DIR}gzip ${BACKUP_DIR}mysqlbackup_${DATA}.sql >/dev/null 2>&1
echo "${DATA} full backup successful !!!">> ${LOG_DIR}backup.log
else
echo "${DATA} full backup failure !!!" >> ${LOG_DIR}backup.log
fi
} #-- Incremental of backup
function backup_incremental() {
if [ ${Flag} == 0 ];then
sudo mysql -u${DB_ROOT} -p${DB_PASSWD} -h${DB_IP} << EOF >/dev/null 2>&1
reset master;
flush privileges;
EOF
echo "${DATA} Clean binary file !!!" >> ${LOG_DIR}backup.log
fi
} #-- Run backup
file_num=`find ${BACKUP_DIR} -name "*.sql.gz" | ${BIN_DIR}wc -l`
if [ ${file_num} -ge 3 ];then
old_file=`${BIN_DIR}ls -lrt ${BACKUP_DIR} | ${BIN_DIR}awk 'NR==2' | ${BIN_DIR}awk '{print $9}'`
sudo ${BIN_DIR}rm -rf ${BACKUP_DIR}${old_file} >/dev/null 2>&1
if [ $? == 0 ];then
echo "${DATA} Clean ${old_file} file successfully !!!" >> ${LOG_DIR}backup.log
else
echo "${DATA} Clean ${old_file} file failure !!!" >> ${LOG_DIR}backup.log
fi
backup_all
backup_incremental
else
backup_all
backup_incremental
fi

mysql.sh


Shell 脚本进阶2的更多相关文章

  1. shell脚本进阶之条件测试与条件语句

       接着上篇博客,今天整理一下关于条件测试和条件语句方面的知识. shell脚本进阶之条件测试    在编写shell脚本时,经常需要对一些条件进行判断,可以使用测试命令test辅助完成测试过程.t ...

  2. 15-1 shell脚本进阶

    shell脚本进阶 循环 循环执行 将某代码段重复运行多次 重复运行多少次 循环次数事先已知 循环次数事先未知 有进入条件和退出条件 for, while, until for循环 for VAR i ...

  3. shell脚本进阶之循环判断

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...

  4. Linux运维之shell脚本进阶篇

    一.if语句的使用 1)语法规则 if [条件] then 指令 fi 或 if [条件];then 指令 fi 提示:分号相当于命令换行,上面两种语法等同特殊写法:if[ -f"$file ...

  5. shell脚本进阶 详解及其实例(一)

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  6. Linux shell脚本进阶使用

    shell的循环控制语句 - continue:提前结束某次循环,重新开始下一次 - break:提前结束某层循环 范例: #求100以内的奇数和 #!/bin/bash sum=0 for i in ...

  7. SHELL脚本进阶

    一.读取参数 $0 程序名称$1 第一个参数$2 第二个参数,依次类推可以使用 basename 来读取程序名称:basename $0 可以使用 dirname 来读取第一个参数的目录:dirnam ...

  8. Shell 脚本进阶,经典用法及其案例

    一.条件选择.判断 1.条件选择if (1)用法格式 if 判断条件 1 ; then 条件为真的分支代码 elif 判断条件 2 ; then 条件为真的分支代码 elif 判断条件 3 ; the ...

  9. Shell—脚本编程进阶

    shell脚本进阶之条件语句 条件选择if语句 https://www.runoob.com/?s=shell&page=1 https://www.cnblogs.com/flylinux/ ...

随机推荐

  1. [WCF] Restful 自定义宿主

    IPersonRetriever: /* * 由SharpDevelop创建. * 用户: Administrator * 日期: 2017/6/2 * 时间: 22:13 * * 要改变这种模板请点 ...

  2. JavaSE 类继承中函数重写

    (1) /** * 继承时重写方法的返回类型可以不一样 * 这时的返回值类型必须是与父类相同或者为子类. */ class A { public Object func(){ return null; ...

  3. B - Assignment

    Tom owns a company and he is the boss. There are n staffs which are numbered from 1 to n in this com ...

  4. vue的插槽slot

    插槽是写在子组件上,用啦留给父级添加内容的位置接口: 1. 父级里的 <template :is='子标签名'>父插入内容</template>标签,里的内容       sl ...

  5. yarn配置日志聚合

    [原文地址] 日志聚集是YARN提供的日志中央化管理功能,它能将运行完成的Container/任务日志上传到HDFS上,从而减轻NodeManager负载,且提供一个中央化存储和分析机制.默认情况下, ...

  6. WPS生成文章目录

    WPS生成文章目录 1.引用–>插入目录...即可!

  7. Alpine Linux常用命令

    一:Alpine Linux开启SSH远程登陆 1.简介: 最重要的一个服务了,远程登陆需要用它,文件传输需要用它,必备功能.不管你是在实体机上跑,虚拟机上跑,docker里面跑,这个都是必须的. 2 ...

  8. NodeJS笔记(二)- 修改模块默认保存路径

    参考:nodejs prefix(全局)和cache(缓存)windows下设置 假设nodejs根目录为“D:\nodejs” 如下所示,新建“node_cache”文件夹用来存放全局缓存 该路径下 ...

  9. Win10部署IIS 10.0

    win10自带IIS10.0 控制面板 >> 程序 >>启用或关闭Windows功能 勾选完之后会安装IIS,安装完成后 计算机管理 >> 服务和应用程序 > ...

  10. CSS样式中文字的换行

    在我们做输出时可能会遇到这样一个问题,就是汉字和英文字母相遇,然后自动换行的问题.例如,当我在输出产品标题时,由于产品名称比较长,包括汉字和英文字母,FF下浏览是正常的,而IE下面 英文会出现换行.当 ...