当前位置:网站首页>常用shell脚本案例解析
常用shell脚本案例解析
2022-08-09 05:13:00 【ELIAUK``】
1.批量解压,使用for脚本
#!/bin/bash
#查询当前文件夹得所有安装包内容
ls *.gz >> tar.log
#使用for循环对这个文件夹里面得所有压缩包进行遍历循环
for i in $(cat tar.log)
#使用压缩方式,把循环出来得压缩名称全部解压一遍,并把他定向到垃圾桶
do
tar -xvf $i & > /dev/null
done
#最后删除记录所有文件名称得日志
rm -rf tar.log
2 .公司的nginx日志太大 做一个日志切割,每天生成一个日志
如果我们的日志不进行切割,那会随着时间的推移越来越大不利于我们规整,所以要定时对nginx的日志进行切割
#!/bin/bash
LOG_DIR=/usr/local/nginx/logs
YESTERDAY_TIME=$(date -d "yesterday" +%F)
LOG_MONTH_DIR=$LOG_DIR/$(date +"%Y-%m")
LOG_FILE_LIST="access.log"
for LOG_FILE in $LOG_FILE_LIST; do
[ ! -d $LOG_MONTH_DIR ] && mkdir -p $LOG_MONTH_DIR
mv $LOG_DIR/$LOG_FILE $LOG_MONTH_DIR/${LOG_FILE}_${YESTERDAY_TIME}
done
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
3.写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线
#!/bin/bash
#循环IP地址最后一位,其中seq表示可以循环得数字
for i in `seq 1 255`
do
#开始进行ping 其中c和W分别是用来统计次数得
ping -c 1 -W 1 192.168.174.$i > /dev/null 2>&1
if [ $? -eq 0 ];then
echo 192.168.174.$i up
else
echo 192.168.174.$i down
fi
done
wait
4.编写一个自动化备份mysql脚本
#!/bin/bash
#用户名称
user="root"
#用户密码
pass="123456"
#用户ip地址
host="192.168.174.133"
#登录mysql数据库的连接方式
comm="-u$user -p$pass -h$host"
#数据库1
data1="test1"
#数据库2
data2="test2"
#系统时间
time=`date +%Y%m%d-%M%H`
#备忘录地址
bak="/opt/backup"
#启动备份软件地址
cmd="/usr/loacl/mysql/bin/mysqldump"
#系统名称
name_1="$data1-$time"
name_2="$data2-$time"
#开始备份数据库
$cmd $comm --databases $data1 > $name_1.sql
$cmd $comm --databases $data2 > $name_2.sql
#包删除数据库文件
/bin/tar -zcf $name_1.tar.gz $name_1.sql --remove > /dev/null
/bin/tar -zcf $name_2.tar.gz $name_2.sql --remove > /dev/null
5.找出占用cpu/内存过高的进程
#标注线是cpu的标注
echo "----------memory cpu 10----------"
#利用ps -eo把pcpu进行排序并输出前10行
ps -eo pid,pcpu,pmem,args --sort -pcpu | head -n 10
#标注线是top的标注
echo "----------memory top 10----------"
#利用ps -eo把pmem进行排序并输出前10行
ps -eo pid,pcpu,pmem,args --sort -pmem | head -n 10
6.批量创建100个用户和密码
#!/bin/bash
user_info=./user.info
for user in USER{1..10}
do
if ! id $user > /dev/null; then
pass=$(echo $RANDOM | md5sum | cut -c 1-8)
useradd $user
echo $pass | passwd --stdin > /dev/null
echo "$user $pass" >> $user_info
echo "$user craete sucessful"
else
echo "$user realdy exits"
fi
done
7.入侵监测脚本
#!/bin/bash
#在使用这个脚本之前,需要安装inotify-tools,yum install -y infotify-tools
#infotifywait可以实时监控rsync文件实现自动同步其中里面的-m参数持续监听
#-r参数使用递归形式进行监听 -q只打印出需要的信息
#--format里面%f表示发生事件的文件 %w表示发生事件的目录
8.批量检查 5个网站域名是否正常
#!/bin/bash
URL_LIST=(' www.baidu.com' 'www.123baidu.com') #网址列表
for URL in ${URL_LIST[*]}; do
FAIL_COUNT=0 #设置一个变量来统计访问失败次数
for ((i=1;i<=3;i++)); do
HTTP_CODE=$(curl -o /dev/null --connect-timeout 3 -s -w "%{http_code}" $URL) #超时时间是3秒
if [ $HTTP_CODE -eq 200 ]; then
echo "$URL OK" #访问正常打印ok
break
else
echo "$URL retry $FAIL_COUNT"
let FAIL_COUNT++ #如果不ok的话就执行计数加一
fi
done
if [ $FAIL_COUNT -eq 3 ]; then #如果FAIL_COUNT=3,就发出告警
echo "Warning: $URL Access failure!"
fi
done
9.将当前目录下大于10K的文件转移到/tmp目录下
#!/bin/bash
for file in $(ll | awk '$5 > 10240 {print $9}')
do
mv $file /tmp
done
边栏推荐
猜你喜欢
硅光电池采集用于植物叶片农残检测
【零基础玩转BLDC系列】无刷直流电机闭环控制与软件架构
浅谈单片机Boot的几种自刷新方式
详谈归并排序时间复杂度过程推导----软考
Pycharm Debug调试使用+代码调试理解
Harmony OS ets ArkUI 】 【 】 development create a view and building layout
C语言之内存函数
【HMS core】【ML kit】Machine Learning Service FAQ
软件测试的发展趋势
Still don't know what business intelligence (BI) is?After reading this article, you will understand
随机推荐
STM32学习笔记(PWM输出)
【Harmony OS】【ARK UI】Date Basic Operation
软件测试的发展趋势
【Harmony OS】【ARK UI】自定义弹窗
mysql content does not exist error
Nacos源码安装
区别如下概念:助记符、汇编语言、汇编语言程序和汇编程序。
软件测试工程师简历要怎么写,才能让HR看到
详谈归并排序时间复杂度过程推导----软考
剑指Offer - 链表翻转及其变体题目总结
Parameters in dynamic libraries cannot be modified through macro definitions or global variables in header files
Openresty执行lua脚本
说明高级语言、汇编语言、机器语言三者的区别,谈谈你对汇编语言的认识。
步进电机驱动的使用及程序
剑指Offer-双指针类型题目总结
什么是ReFi?
Webgis地图框架的对比
aur安装报错一个或多个文件没有通过有效性检查!
【ManageEngine】网络性能监控工具
软件测试的方法详细介绍