shell脚本集合(持续更新)

1、系统日志定时备份

echo "The program being executed......"
back_dir=/dengBao/logBack/systemLog
file_dir=/var/log

#定义备份文件名字
file_name=`date +%Y-%m-%d  --date='-1 day'`

if [[ ! -d "${back_dir}" ]]; then
  mkdir -p "${back_dir}"
fi

if [[ ! -d "${back_dir}/${file_name}" ]]; then
  mkdir -p ${back_dir}/${file_name}
fi

cp -r ${file_dir}/*   ${back_dir}/${file_name}/

find $back_dir/* -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;
echo "succeed"

添加定时任务

echo "0 0 * * * /opt/script/systemLogBack.sh >/dev/null &" >>/var/spool/cron/root

2、定期清除docker日志

#!/bin/sh 

echo "======== start clean docker containers logs ========"  

logs=$(find /var/lib/docker/containers/ -name *-json.log)  

for log in $logs  
do  
	echo "clean logs : $log"  
    cat /dev/null > $log  
done  

echo "======== end clean docker containers logs ========"  

3、自动屏蔽攻击 IP

#!/bin/sh 
DATE=$(date +%d/%b/%Y:%H:%M)
LOG_FILE=/usr/local/nginx/logs/demo2.access.log
iplist=$(tail -n 5000 $LOG_FILE | grep $DATE | awk '{count[$1]++} END{for(ip in count) print count[ip], ip}' | sort -rn -k1 |head -n10| awk '{print $2}')
#awk '{print $1}' 1.log |sort -n |uniq -c |sort -nr
for ip in $iplist
do
	if [ $(firewall-cmd --zone=public --list-rich-rules |grep -c $ip) -qe 0 ];then
	firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=$ip drop"
	fi
done

4、mysql定时备份脚本


#!/bin/bash
USER="root"
PASSWORD="root123"
DATABASE="db1"
HOSTNAME="localhost"
BACKUP_DIR=/home/ywtg/backup/
LOGFILE=/home/ywtg/backup/ywtg_backup.log
DATE=`date '+%Y%m%d-%H%M'`
#备份文件
DUMPFILE='ywtg'-$DATE.sql
#压缩文件
ARCHIVE='ywtg'-$DATE.sql.tgz
#组装dump命令
OPTIONS="-h$HOSTNAME -u$USER -p$PASSWORD $DATABASE"

#判断备份文件存储目录是否存在,否则创建该目录
if [ ! -d $BACKUP_DIR ] ;
then
	mkdir -p "$BACKUP_DIR"
fi

#开始备份之前,将备份信息头写入日记文件
echo " " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------" >> $LOGFILE
echo "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILE
echo "------------------" >> $LOGFILE

cd $BACKUP_DIR
#使用mysqldump 命令备份制定数据库,并以格式化的时间戳命名备份文件
/usr/local/mysql/bin/mysqldump $OPTIONS > $DUMPFILE
#判断数据库备份是否成功
if [[ $? == 0 ]]; then
    #创建备份文件的压缩包
    tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
    #输入备份成功的消息到日记文件
    echo "[$ARCHIVE] Backup Successful!" >> $LOGFILE
    #删除原始备份文件,只需保 留数据库备份文件的压缩包即可
    rm -f $DUMPFILE
else
    echo "Database Backup Fail!" >> $LOGFILE
fi

#输出备份过程结束的提醒消息
echo "Backup Process Done"
#删除7天以上的备份
find /home/ywtg/backup/  -type f -mtime +7 -name *.sql.tgz  -exec rm -f {} \;

获取linux服务器资源,以json格式输出

disk=$(lsblk --output SIZE -b -d -n | awk '{sum+=$1} END {print sum/1024/1024/1024"G"}')
memory=$(awk '/MemTotal/ {printf "%.0fG\n", $2/1024/1024}' /proc/meminfo)
cpu="$(grep -c '^processor' /proc/cpuinfo)C"
ip="$(ip -4 addr show | awk '/(ens|eth)/ { print $2 }' | cut -d "/" -f 1 | awk 'NR==2')"
#echo -e "$ip $disk $memory $cpu"
# 构造 JSON 格式字符串
json="{\"ip\":\"$ip\",\"disk\":\"$disk\",\"memory\":\"$memory\",\"cpu\":\"$cpu\"}"

# 输出 JSON 字符串
echo "$json"

应用日志定时压缩

#! /bin/bash
#压缩所有app.log.2023-09-29格式的文件,并删除源文件
dir="/home/app/logs"

cd $dir

files=$(ls | grep -E "^app\.log\.[0-9]{4}-[0-9]{2}-[0-9]{2}$")

for file in $files
do
  #echo $file
  tar -czf $file.tar.gz $file && rm -f $file
done

zabbix监控JVM,自定义脚本

#! /bin/bash
service="$1"
index="$2"

pid="$(ps aux |grep "$service"|grep java | grep -v "grep" |awk '{print $2}')"
#echo "$pid"
column=$(jstat -gc $pid 1000 1 | awk -v v="$index" 'NR==1{for(i=1;i<=NF;i++) if($i==v) print i}') 
#echo "$column"
value=$(jstat -gc $pid 1000 1 |awk -v col="$column" 'NR>1{print $col}')
echo $value
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值