mysql物理备份脚本1
#!/bin/bash
设置-e
USER=\’备份\’
密码=\’备份\’
# 数据库数据目录#
DATA_DIR=\’/data/mysql\’
BIN_INDEX=$DATA_DIR\’/mysql-bin.index\’
# 备份目录#
BACKUP_DIR=\’/data/backup/mysql\’
BACKUP_LOG=\’/var/log/mysql/backup.log\’
DATE=`日期+\’%Y%m%d\’`
TIME=`日期+\’%Y%m%d%H\’`
LOG_TIME=`日期+\’%Y-%m-%d %H:%M:%S\’`
DELETE_BINLOG_TIME=\’7 天\’
INCRMENT_INTERVAL=\’3小时\’
笔记() {
printf \'[$LOG_TIME] note: $*\\n\’ $BACKUP_LOG;
}
警告() {
printf \'[$LOG_TIME] warning: $*\\n\’ $BACKUP_LOG;
}
错误() {
printf \'[$LOG_TIME] error: $*\\n\’ $BACKUP_LOG;
1号出口。
}
完整备份(){
本地dbs=`ls -l $DATA_DIR | grep \’^d\’ -F \’ \'{print $9}\’ |
对于数据库$dbs
做
本地备份目录=$BACKUP_DIR\’/full/\’$db
本地文件名=$db\’.\’$DATE
本地备份文件=$备份目录\’/\’$文件名\’.sql\’
如果[ !-d $backup_dir ]
在那之后
mkdir -p $backup_dir || { 错误\’无法为数据库$db 创建完整备份目录$backup_dir\’;
note \’数据库$db 完整备份目录$backup_dir 不存在。创建完成\’;
菲
注意“完整备份$db start .”。
mysqldump –user=${USER} –password=${PASSWORD} –flush-logs –skip-lock-tables –quick $db $backup_file || { warning \’无法继续备份数据库$db。做过\’; }
cd $backup_dir
tar -cPzf $文件名\’.tar.gz\’ $文件名\’.sql\’
rm -f $备份文件
chown -fR mysql:mysql $backup_dir
note \’数据库$db 备份成功\’;
注意“完整备份$db 已结束”。
结尾
}
增量备份() {
本地StartTime=`日期\’-d $INCRMENT_INTERVAL 之前\’ +\’%Y-%m-%d %H:%M:%S\’`
本地DELETE_BINLOG_END_TIME=`日期\’-d $DELETE_BINLOG_TIME 之前\’ +\’%Y-%m-%d %H:%M:%S\’`
本地dbs=`ls -l $DATA_DIR | grep \’^d\’ -F \’ \'{print $9}\’ |
mysql -u$USER -p$PASSWORD -e \’\’在$DELETE_BINLOG_END_TIME 之前删除主日志\’ note \’在$DELETE_BINLOG_TIME 天之前删除日志\’;
文件名=`cat $BIN_INDEX | awk -F \’/\’ \'{print $2}\’`
对于我来说$filename
做
对于数据库$dbs
做
本地备份目录=$BACKUP_DIR\’/increment/\’$db
本地文件名=$db\’.\’$TIME
本地备份文件=$备份目录\’/\’$文件名\’.sql\’
如果[ !-d $backup_dir ]
在那之后
mkdir -p $backup_dir || { 错误\’无法创建数据库$db 增量备份目录$backup_dir\’;
note \’数据库$db 增量备份目录$backup_dir 不存在。创建完成\’;
菲
注意\’增量备份$db形成时间$StartTime开始.\’
mysqlbinlog -d $db –start-datetime=\’$StartTime\’ $DATA_DIR/$i $backup_file || { 警告\’数据库$db 备份无法继续\’ }
注意“增量备份$db结束”。
结尾
结尾
对于数据库$dbs
做
本地备份目录=$BACKUP_DIR\’/increment/\’$db
本地文件名=$db\’.\’$TIME
本地备份文件=$备份目录\’/\’$文件名\’.sql\’
cd $backup_dir
tar -cPzf $文件名\’.tar.gz\’ $文件名\’.sql\’
rm -f $备份文件
note \’数据库$db 备份成功\’;
结尾
}
案例“1 美元”
满的)
完整备份
;
增量)
增量备份
;
*)
2号出口
;
艾萨克
1号出口
mysql 物理备份脚本2
#!/usr/bin/bash
!
mysql物理备份脚本
工具:xtrabackup 2.3.6
备份策略:周日全量备份,周一、周二、周四、周五增量备份,周三、周六差异备份
1.完成后台运行
2. 完整备份
3. 日志记录
4. 处理历史数据
!
dbUser=\’根\’
dbPasswd=\’千峰@123\’
backCMD=\’/usr/bin/innobackupex\’
backDir=\’/备份\’
logPath=\’/var/log/backup.log\’
# 定义规则数组0 全量备份1 增量备份2 差异备份
# 数组值是备份方法,数组索引是星期几。
规则=(0 1 1 2 1 1 2)
# 0 1 2 3 4 5 6
日期时间=$(日期+%w)
满的(){
MV $logPath $backDir
tar cvzf /tmp/mysql_back_`date +%F`.tar.gz \’$backDir\’ \\
rm -rf $backDir 目录
mkdir -p $backDir/{full,incr,diff}
$backCMD –user=$dbUser –password=$dbPasswd $backDir/full
echo \’full `ls $backDir/full |tail -n 1`\’ $logPath
}
其他(){
# $1 incr|diff 备份类型
# $2 需要基于的完整路径
$backCMD –user=$dbUser –password=$dbPasswd –incremental $backDir/$1 –incremental-basedir=$2
echo \’$3 `ls $backDir/$3 |tail -n 1`\’ $logPath
}
${rule[5]} 的# 个案例${rule[$datetime]}
0)
满的
;
1)
type=$(tail -n 1 $logPath|awk \'{print $1}\’) # 获取最后一次备份的类型
time=$(tail -n 1 $logPath|awk \'{print $2}\’) # 获取最后一次备份的目录
其他增量$backDir/$type/$time 增量
/备份/完整/2022-05-22_00-00-05
;
2)
time=$(grep full $logPath|awk \'{print $2}\’)
其他差异$backDir/full/$time diff
;
艾萨克
数据目录备份
#!/bin/bash
#
#
时间
日期=$(日期\’+%Y-%m-%d_%H_%M_%S\’)
# 备份目录
BACKUPDIR=\’/主页/备份\’
# 备份目录
SORFILE=/选择
# 目标文件名
DESFILE=/home/backups/$SORFILE.$(日期\’+%Y-%m-%d_%H_%M_%S\’).zip
[ ! -d $BACKUPDIR ] mkdir -p $BACKUPDIR
cd $BACKUPDIR
echo \’开始备份$SORFILE.\’
睡觉3
#echo \’$DESFILE\’
#tar cvf $DESFILE $SORFILE
#gzip -f .zip $DESFILE
zip -r $DESFILE $SORFILE /dev/null
如果[ \’$?\’==\’0\’ ]
在那之后
echo $(date +%Y-%m-%d)\’zip成功\’backup.log
除此之外
echo $(date +%Y-%m-%d)\’zip失败\’backup.log
出口0
菲
# 删除3天前的备份
查找$BACKUPDIR -type f -ctime +3 |
磁盘io检查
##iostat 显示磁盘活动统计信息
##显示所有设备的负载状态。 r/s: 每秒完成的读取I/O 设备数。这是rio/s, w/s: 每秒完成的I/O 设备写入次数。即wio/s 等。
iostat
##每2秒更新一次磁盘IO信息,每次显示3次
碘伏2 3
#显示特定磁盘的IO信息
iostat -d sda1
##显示tty和CPU信息
iostat-t
##以M为单位显示磁盘IO信息
iostat-m
##查看TPS和吞吐量信息kB_read/s:每秒从设备读取的数据量(以驱动器表示),kB_wrtn/s:每秒写入设备的数据量(以驱动器表示)。读取的数据量。 kB_wrtn:写入的数据总量。
iostat -d -k 1 1
#显示设备使用情况(%util)和响应时间(await)
iostat -d -x -k 1 1
#显示CPU状态
iostat -c 1 3
#进程统计(pid)。进程统计自然包括进程的IO状态。
PID统计
#仅显示IO
pidstat -d 1
# -d IO信息、-r缺页和内存信息-u CPU使用情况-t 以线程为统计单位1,每秒统计一次
pidstat -u -r -d -t 1
#文件级IO分析,查看哪些进程打开了当前文件
拉索夫
ls /proc/pid/fd
使用#sar 报告磁盘I/O 信息DEV 监控的块设备tps 每秒物理设备I/O 传输总数rd_sec/s 每秒从设备读取的扇区数wr_sec/s 每秒写入设备的扇区数avgrq- sz I/O 请求的平均扇区数
#avgqu-sz I/O 请求平均队列长度await I/O 请求平均等待时间(ms) svctm I/O 请求平均服务时间(ms)%util I/O 请求占用时间百分比,其他字词,设备的使用状态
SAR-PD 10 3
#iotop 的io 版本
洛托普
#显示页面缓存信息。这里,Cached是指用于页面缓存(diskcache-SwapCache)的内存大小。随着缓存页被写入,Dirty 值增加,并且随着缓存页开始写入硬盘,Writeback 值增加,直到写入完成。
猫/过程/内存信息
检查有多少#pdflush 进程。 Linux 使用pdflush 进程将缓存页面中的数据写入硬盘。
#pdflush行为是由参数/proc/sys/vm/proc/sys/vm/dirty_writeback_centisecs控制的(默认500): 1/100秒,启动pdflush将缓存页面数据写入硬盘的时间来做。默认情况下,启动两个(或更多)线程需要5 秒。如果写回时间长于dirty_writeback_centisecs 时间,则可能会遇到问题
猫/proc/sys/vm/nr_pdflush_threads
#显示I/O调度器
#调度算法
#noop 预期截止日期[cfq]
#deadline : 截止时间算法保证给定IO 请求的最小延迟时间。
#anticipatory:IO发生后,如果有其他进程请求IO,则会生成默认的6ms猜测时间,以猜测下一个进程将请求IO的目的。这会导致随机读取出现较大延迟。它对于数据库应用程序来说很糟糕,但对于Web 服务器之类的东西来说表现得足够好。
#cfq: 为每个进程维护一个IO队列。每个进程提交的IO请求由cfq以循环方式处理,使得所有IO请求公平。适用于离散读取应用。
#noop: 所有IO 请求都以FIFO 队列格式处理。默认IO 不会导致任何性能问题。
cat /sys/block/[磁盘]/队列/调度程序
#更改IO调度器
$回显截止日期/sys/block/sdX/queue/scheduler
#增加调度器请求队列
$ echo 4096 /sys/block/sdX/queue/nr_requests
性能相关内容查看
#显示当前系统负载
工作时间
#显示系统状态以及各个进程的系统资源使用情况
向上
#直观显示CPU使用率
h 顶
#显示每个CPU的负载信息
mpstat -P 全部1
#每秒显示磁盘IO统计数据
iostat-xkdz 1
#每秒显示虚拟内存使用信息
虚拟机状态1
#显示内存使用统计信息
自由的
#显示网络使用信息
nicstat -z 1
类似于#vmstat的显示优化工具
数据统计1
#显示系统活动状态,如系统分页统计、块设备IO统计等。
塞尔
#显示网络连接状态
网络统计-s
#显示进程资源使用信息
PID统计1
pidstat -d 1
#显示进程的系统调用信息-p 后跟进程ID。 -tttT是处理系统后的系统调用时间
斯特雷斯-tttT-p 12670
#统计IO设备输入/输出系统调用信息
strace -c dd if=/dev/zero of=/dev/null bs=512 count=1024k
#tcpdump 显示网络数据包
tcpdump -nr /tmp/out.tcpdump
#块设备读写事件信息统计
btrace /dev/sdb
#显示iotop进程的IO操作统计信息
iotop-bod5
#slabtop 显示内核slab内存分配器使用信息。
板顶-sc
#系统参数设置
sysctl-a
#系统性能指标统计
性能统计gzip 文件1
#显示系统CPU活动状态
性能记录-a -g -F 997 sleep 10
进程查看
## 进程的进程管理
##ps 显示系统当前运行的线程列表,提供瞬时状态而不是连续状态。对于更通用的参数,您应该使用man ps 来查看它们。
附:
## 显示所有进程的详细信息
ps辅助
##-u 显示用户进程列表
ps -f -u www 数据
## -C 按名称或命令查找进程
ps -C apache2
## –sort 按进程CPU使用率降序排序,并显示前五个进程。 -pcpu 表示降序排列。 pcpu 表示升序。
ps aux –sort=-pcpu -5
##-f 对于父子进程,以树形结构显示进程的层次关系。
ps -f –forest -C apache2
##显示父进程的所有子进程
ps -o pid,uname,comm -C apache2
ps–ppid 2359
##显示某个进程的所有线程-L 参数
ps-p 3150-L
##显示进程执行时间-o参数
ps -e -o pid、通信、etime
##watch命令可以实时捕捉PS显示过程
watch -n 1 \’ps -e -o pid,uname,cmd,pmem,pcpu –sort=-pmem,-pcpu head -15\’
##jobs 显示后台运行的进程的作业命令的执行结果。 + 表示当前作业之后的作业。 jobs -l 选项显示所有任务的PID。作业的状态可以是“正在运行”、“已停止”或“已终止”,但如果任务被终止(终止),shell 会从当前shell 环境已知的列表中选择该任务并删除进程ID。即显示jobs 命令。有关当前shell 环境中后台启动的进程以及运行或暂停的任务的信息。
工作
##显示后台操作的进程数
工作-p
##显示当前终止或终止的进程号
工作n
##kill 命令要终止前台进程,请使用Ctrl+C Kill 通过top 获取进程ID 号或ps Kill [-s signal -p ] [ -a ] process ID.
##发送指定的信号到相应的进程。如果未指定模型,则发送SIGTERM (15) 并终止指定的进程。关闭进程号为12的进程
杀死12人
##相当于在前台运行PID为123的进程时按Ctrl+C
杀戮-2 123
##如果无法终止程序,可以使用“-KILL”参数。发送的信号是SIGKILL(9),它强制进程终止。
杀-9123
##列出所有信号名称
##HUP 1 终端已断开
##INT 2 中断(与Ctrl + C 相同)
##QUIT 3 退出(与Ctrl + \\ 相同)
##第15 学期结束
##KILL 9 强制终止
##CONT 18 继续(与STOP、fg/bg 命令相反)
##STOP 19 暂停(与Ctrl + Z 相同)
杀-l
##获取指定信号的值
杀-l 杀
## 杀死指定用户的所有进程
杀死-u peidalinux
杀死-9 $(ps -ef | grep peidalinux)
## 将后台命令带到前台继续执行。将进程123 置于前台并运行它。
FG123
## 将后台暂停的命令转换为继续运行
BG123
##此命令即使在您注销帐户或关闭终端后也可以保持相应进程的运行。 nohup 的意思是不挂起。以下输出被重定向到myout.file 文件。
nohup 命令myout.file 21
##at:安排任务在特定时间运行特定作业并在特定时间运行一次。
## 格式:HH:MM YYYY-MM-DD //HH(时):MM(分)YYYY(年)-MM(月)-DD(日)
##HH[上午下午]+D(Sun)日//HH(时间)[上午(Morning)下午(Afternoon)]+Sun(太阳)
at 12:00 (time) //at命令设置12:00执行操作
#atuseradd aaa //使用at命令配置并添加用户aaa
#ctrl+d //at 终止命令
#tail -f /etc/passwd //检查/etc/passwd文件最后10行是否添加了用户aaa
##设置好计划任务后,在运行之前可以使用atq命令来检查系统是否正在运行该任务。
阿特克
##启动定时任务后,如果不想再启动配置的定时任务,可以使用atrm命令将其删除。
atrm 1 //删除定时任务1
##pstree 命令:列出当前进程及其树结构。 格式:pstree [选项] [pid|用户]
树
##nice命令:改变程序执行的优先级。应用程序优先级值范围从-20到19。数字越低,优先级越高。通常,典型应用程序的优先级值(CPU 使用率值)为0。当然,常用程序的优先级越高,它们的启动和运行速度就越快。请注意,普通用户只能调整0到19之间的应用程序优先级值,只有超级用户才有权调整更高的优先级值(-20到19)。
不错[-n 优先级][–帮助][–版本][命令]
不错-n 5 ls
##sleep命令:暂停进程
执行一段时间
date;sleep 1m;date
##renice命令 renice命令允许用户修改一个正在运行进程的优先权。利用renice命令可以在命令执行时调整其优先权。
##其中,参数number与nice命令的number意义相同。(1) 用户只能对自己所有的进程使用renice命令。(2) root用户可以在任何进程上使用renice命令。(3) 只有root用户才能提高进程的优先权
renice -5 -p 5200 #PID为5200的进程nice设为-5
##pmap命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和内存状态信息 #pmap PID
pmap 20367
java-jvm数据查看
#!/bin/sh
DUMP_PIDS=`ps –no-heading -C java -f –width 1000 |awk \'{print $2}\’`
if [ -z \”$DUMP_PIDS\” ]; then
echo \”The server $HOST_NAME is not started!\”
exit 1;
fi
DUMP_ROOT=~/dump
if [ ! -d $DUMP_ROOT ]; then
mkdir $DUMP_ROOT
fi
DUMP_DATE=`date +%Y%m%d%H%M%S`
DUMP_DIR=$DUMP_ROOT/dump-$DUMP_DATE
if [ ! -d $DUMP_DIR ]; then
mkdir $DUMP_DIR
fi
for PID in $DUMP_PIDS ; do
#Full thread dump 用来查线程占用,死锁等问题
$JAVA_HOME/bin/jstack $PID > $DUMP_DIR/jstack-$PID.dump 2>&1
echo -e \”.\\c\”
#打印出一个给定的Java进程、Java core文件或远程Debug服务器的Java配置信息,具体包括Java系统属性和JVM命令行参数。
$JAVA_HOME/bin/jinfo $PID > $DUMP_DIR/jinfo-$PID.dump 2>&1
echo -e \”.\\c\”
#jstat能够动态打印jvm(Java Virtual Machine Statistics Monitoring Tool)的相关统计信息。如young gc执行的次数、full gc执行的次数,各个内存分区的空间大小和可使用量等信息。
$JAVA_HOME/bin/jstat -gcutil $PID > $DUMP_DIR/jstat-gcutil-$PID.dump 2>&1
echo -e \”.\\c\”
$JAVA_HOME/bin/jstat -gccapacity $PID > $DUMP_DIR/jstat-gccapacity-$PID.dump 2>&1
echo -e \”.\\c\”
#未指定选项时,jmap打印共享对象的映射。对每个目标VM加载的共享对象,其起始地址、映射大小及共享对象文件的完整路径将被打印出来,
$JAVA_HOME/bin/jmap $PID > $DUMP_DIR/jmap-$PID.dump 2>&1
echo -e \”.\\c\”
#-heap打印堆情况的概要信息,包括堆配置,各堆空间的容量、已使用和空闲情况
$JAVA_HOME/bin/jmap -heap $PID > $DUMP_DIR/jmap-heap-$PID.dump 2>&1
echo -e \”.\\c\”
#-dump将jvm的堆中内存信息输出到一个文件中,然后可以通过eclipse memory analyzer进行分析
#注意:这个jmap使用的时候jvm是处在假死状态的,只能在服务瘫痪的时候为了解决问题来使用,否则会造成服务中断。
$JAVA_HOME/bin/jmap -dump:format=b,file=$DUMP_DIR/jmap-dump-$PID.dump $PID 2>&1
echo -e \”.\\c\”
#显示被进程打开的文件信息
if [ -r /usr/sbin/lsof ]; then
/usr/sbin/lsof -p $PID > $DUMP_DIR/lsof-$PID.dump
echo -e \”.\\c\”
fi
done
#主要负责收集、汇报与存储系统运行信息的。
if [ -r /usr/bin/sar ]; then
/usr/bin/sar > $DUMP_DIR/sar.dump
echo -e \”.\\c\”
fi
#主要负责收集、汇报与存储系统运行信息的。
if [ -r /usr/bin/uptime ]; then
/usr/bin/uptime > $DUMP_DIR/uptime.dump
echo -e \”.\\c\”
fi
#内存查看
if [ -r /usr/bin/free ]; then
/usr/bin/free -t > $DUMP_DIR/free.dump
echo -e \”.\\c\”
fi
#可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。
if [ -r /usr/bin/vmstat ]; then
/usr/bin/vmstat > $DUMP_DIR/vmstat.dump
echo -e \”.\\c\”
fi
#报告与CPU相关的一些统计信息
if [ -r /usr/bin/mpstat ]; then
/usr/bin/mpstat > $DUMP_DIR/mpstat.dump
echo -e \”.\\c\”
fi
#报告与IO相关的一些统计信息
if [ -r /usr/bin/iostat ]; then
/usr/bin/iostat > $DUMP_DIR/iostat.dump
echo -e \”.\\c\”
fi
#报告与网络相关的一些统计信息
if [ -r /bin/netstat ]; then
/bin/netstat > $DUMP_DIR/netstat.dump
echo -e \”.\\c\”
fi
echo \”OK!\”
常用工具安装
#!/usr/bin/env bash
# ———————————————————————————
# 控制台颜色
BLACK=\”\\033[1;30m\”
RED=\”\\033[1;31m\”
GREEN=\”\\033[1;32m\”
YELLOW=\”\\033[1;33m\”
BLUE=\”\\033[1;34m\”
PURPLE=\”\\033[1;35m\”
CYAN=\”\\033[1;36m\”
RESET=\”$(tput sgr0)\”
# ———————————————————————————
printf \”${BLUE}\\n\”
cat << EOF
###################################################################################
# 安装常用命令工具
# 命令工具清单如下:
# 核心工具:df、du、chkconfig
# 网络工具:ifconfig、netstat、route、iptables
# IP工具:ip、ss、ping、tracepath、traceroute
# DNS工具:dig、host、nslookup、whois
# 端口工具:lsof、nc、telnet
# 下载工具:curl、wget
# 编辑工具:emacs、vim
# 流量工具:iftop、nethogs
# 抓包工具:tcpdump
# 压缩工具:unzip、zip
# 版本控制工具:git、subversion
#
###################################################################################
EOF
printf \”${RESET}\\n\”
printf \”\\n${GREEN}>>>>>>>>> 安装常用命令工具开始${RESET}\\n\”
# 核心工具
printf \”\\n${CYAN}>>>> install coreutils(df、du)${RESET}\\n\”
yum install -y coreutils
printf \”\\n${CYAN}>>>> install chkconfig${RESET}\\n\”
yum install -y chkconfig
# 网络工具
printf \”\\n${CYAN}>>>> install net-tools(ifconfig、netstat、route)${RESET}\\n\”
yum install -y net-tools
printf \”\\n${CYAN}>>>> install iptables${RESET}\\n\”
yum install -y iptables
# IP工具
printf \”\\n${CYAN}>>>> install iputils(ping、tracepath)${RESET}\\n\”
yum install -y iputils
printf \”\\n${CYAN}>>>> install traceroute${RESET}\\n\”
yum install -y traceroute
printf \”\\n${CYAN}>>>> install iproute(ip、ss)${RESET}\\n\”
yum install -y iproute
# 端口工具
printf \”\\n${CYAN}>>>> install lsof${RESET}\\n\”
yum install -y lsof
printf \”\\n${CYAN}>>>> install nc${RESET}\\n\”
yum install -y nc
printf \”\\n${CYAN}>>>> install netstat${RESET}\\n\”
yum install -y netstat
# DNS工具
printf \”\\n${CYAN}>>>> install bind-utils(dig、host、nslookup)${RESET}\\n\”
yum install -y bind-utils
printf \”\\n${CYAN}>>>> install whois${RESET}\\n\”
yum install -y whois
# 下载工具
printf \”\\n${CYAN}>>>> install curl${RESET}\\n\”
yum install -y curl
printf \”\\n${CYAN}>>>> install wget${RESET}\\n\”
yum install -y wget
# 编辑工具
printf \”\\n${CYAN}>>>> install emacs${RESET}\\n\”
yum install -y emacs
printf \”\\n${CYAN}>>>> install vim${RESET}\\n\”
yum install -y vim
# 流量工具
printf \”\\n${CYAN}>>>> install iftop${RESET}\\n\”
yum install -y iftop
printf \”\\n${CYAN}>>>> install nethogs${RESET}\\n\”
yum install -y nethogs
# 抓包工具
printf \”\\n${CYAN}>>>> install tcpdump${RESET}\\n\”
yum install -y tcpdump
# 压缩工具
printf \”\\n${CYAN}>>>> install unzip${RESET}\\n\”
yum install -y unzip
# 版本控制工具
printf \”\\n${CYAN}>>>> install git${RESET}\\n\”
yum install -y git
printf \”\\n${CYAN}>>>> install subversion${RESET}\\n\”
yum install -y subversion
printf \”\\n${GREEN}<<<<<<<< 安装常用命令工具结束${RESET}\\n\”
系统信息查看1
#!/usr/bin/env bash
##############################################################################
# console color
C_RESET=\”$(tput sgr0)\”
C_BLACK=\”\\033[1;30m\”
C_RED=\”\\033[1;31m\”
C_GREEN=\”\\033[1;32m\”
C_YELLOW=\”\\033[1;33m\”
C_BLUE=\”\\033[1;34m\”
C_PURPLE=\”\\033[1;35m\”
C_CYAN=\”\\033[1;36m\”
C_WHITE=\”\\033[1;37m\”
##############################################################################
printf \”${C_PURPLE}\”
cat << EOF
###################################################################################
# 系统信息检查脚本
###################################################################################
EOF
printf \”${C_RESET}\”
[[ $(id -u) -gt 0 ]] && echo \”请用root用户执行此脚本!\” && exit 1
sysversion=$(rpm -q centos-release | cut -d- -f3)
double_line=\”===============================================================\”
line=\”———————————————-\”
# 打印头部信息
printHeadInfo() {
cat << EOF
+———————————————————————————+
| 欢迎使用 【系统信息检查脚本】 |
+———————————————————————————+
EOF
}
# 打印尾部信息
printFootInfo() {
cat << EOF
+———————————————————————————+
| 脚本执行结束,感谢使用!|
+———————————————————————————+
EOF
}
options=( \”获取系统信息\” \”获取服务信息\” \”获取CPU信息\” \”获取系统网络信息\” \”获取系统内存信息\” \”获取系统磁盘信息\” \”获取CPU/内存占用TOP10\” \”获取系统用户信息\” \”输出所有信息\” \”退出\” )
printMenu() {
printf \”${C_BLUE}\”
printf \”主菜单:\\n\”
for i in \”${!options[@]}\”; do
index=`expr ${i} + 1`
val=`expr ${index} % 2`
printf \”\\t(%02d) %-30s\” \”${index}\” \”${options[$i]}\”
if [[ ${val} -eq 0 ]]; then
printf \”\\n\”
fi
done
printf \”${C_BLUE}请输入需要执行的指令:\\n\”
printf \”${C_RESET}\”
}
# 获取系统信息
get_systatus_info() {
sys_os=$(uname -o)
sys_release=$(cat /etc/redhat-release)
sys_kernel=$(uname -r)
sys_hostname=$(hostname)
sys_selinux=$(getenforce)
sys_lang=$(echo $LANG)
sys_lastreboot=$(who -b | awk \'{print $3,$4}\’)
sys_runtime=$(uptime | awk \'{print $3,$4}\’ | cut -d, -f1)
sys_time=$(date)
sys_load=$(uptime | cut -d: -f5)
cat << EOF
【系统信息】
系统: ${sys_os}
发行版本: ${sys_release}
系统内核: ${sys_kernel}
主机名: ${sys_hostname}
selinux状态: ${sys_selinux}
系统语言: ${sys_lang}
系统当前时间: ${sys_time}
系统最后重启时间: ${sys_lastreboot}
系统运行时间: ${sys_runtime}
系统负载: ${sys_load}
EOF
}
# 获取CPU信息
get_cpu_info() {
Physical_CPUs=$(grep \”physical id\” /proc/cpuinfo | sort | uniq | wc -l)
Virt_CPUs=$(grep \”processor\” /proc/cpuinfo | wc -l)
CPU_Kernels=$(grep \”cores\” /proc/cpuinfo | uniq | awk -F \’: \’ \'{print $2}\’)
CPU_Type=$(grep \”model name\” /proc/cpuinfo | awk -F \’: \’ \'{print $2}\’ | sort | uniq)
CPU_Arch=$(uname -m)
cat << EOF
【CPU信息】
物理CPU个数:$Physical_CPUs
逻辑CPU个数:$Virt_CPUs
每CPU核心数:$CPU_Kernels
CPU型号:$CPU_Type
CPU架构:$CPU_Arch
EOF
}
# 获取服务信息
get_service_info() {
port_listen=$(netstat -lntup | grep -v \”Active Internet\”)
kernel_config=$(sysctl -p 2> /dev/null)
if [[ ${sysversion} -gt 6 ]]; then
service_config=$(systemctl list-unit-files –type=service –state=enabled | grep \”enabled\”)
run_service=$(systemctl list-units –type=service –state=running | grep \”.service\”)
else
service_config=$(/sbin/chkconfig | grep -E \”:on|:启用\” | column -t)
run_service=$(/sbin/service –status-all | grep -E \”running\”)
fi
cat << EOF
【服务信息】
${service_config}
${line}
运行的服务:
${run_service}
${line}
监听端口:
${port_listen}
${line}
内核参考配置:
${kernel_config}
EOF
}
# 获取系统内存信息
get_mem_info() {
check_mem=$(free -m)
MemTotal=$(grep MemTotal /proc/meminfo | awk \'{print $2}\’) #KB
MemFree=$(grep MemFree /proc/meminfo | awk \'{print $2}\’) #KB
let MemUsed=MemTotal-MemFree
MemPercent=$(awk \”BEGIN {if($MemTotal==0){printf 100}else{printf \\\”%.2f\\\”,$MemUsed*100/$MemTotal}}\”)
report_MemTotal=\”$((MemTotal/1024))\” \”MB\” #内存总容量(MB)
report_MemFree=\”$((MemFree/1024))\” \”MB\” #内存剩余(MB)
report_MemUsedPercent=$(free | sed -n \’2p\’ | gawk \’x = int(( $3 / $2 ) * 100) {print x}\’ | sed \’s/$/%/\’)
cat << EOF
【内存信息】
内存总容量(MB): ${report_MemTotal}
内存剩余量(MB):${report_MemFree}
内存使用率: ${report_MemUsedPercent}
EOF
}
# 获取系统网络信息
get_net_info() {
pri_ipadd=$(ip addr | awk \’/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\\/(.*)/, \”\\\\1\”, \”g\”, $2)}\’)
pub_ipadd=$(curl ifconfig.me -s)
gateway=$(ip route | grep default | awk \'{print $3}\’)
mac_info=$(ip link | egrep -v \”lo\” | grep link | awk \'{print $2}\’)
dns_config=$(egrep -v \”^$|^#\” /etc/resolv.conf)
route_info=$(route -n)
cat << EOF
【网络信息】
系统公网地址:${pub_ipadd}
系统私网地址:${pri_ipadd}
网关地址:${gateway}
MAC地址:${mac_info}
路由信息:
${route_info}
DNS 信息:
${dns_config}
EOF
}
# 获取系统磁盘信息
get_disk_info() {
disk_info=$(fdisk -l | grep \”Disk /dev\” | cut -d, -f1)
disk_use=$(df -hTP | awk \’$2!=\”tmpfs\”{print}\’)
disk_percent=$(free | sed -n \’2p\’ | gawk \’x = int(( $3 / $2 ) * 100) {print x}\’ | sed \’s/$/%/\’)
disk_inode=$(df -hiP | awk \’$1!=\”tmpfs\”{print}\’)
cat << EOF
【磁盘信息】
${disk_info}
磁盘使用: ${disk_use}
磁盘使用百分比: ${disk_percent}
inode信息: ${disk_inode}
EOF
}
# 获取系统用户信息
get_sys_user() {
login_user=$(awk -F: \'{if ($NF==\”/bin/bash\”) print $0}\’ /etc/passwd)
ssh_config=$(egrep -v \”^#|^$\” /etc/ssh/sshd_config)
sudo_config=$(egrep -v \”^#|^$\” /etc/sudoers | grep -v \”^Defaults\”)
host_config=$(egrep -v \”^#|^$\” /etc/hosts)
crond_config=$(for cronuser in /var/spool/cron/*; do
ls ${cronuser} 2> /dev/null | cut -d/ -f5; egrep -v \”^$|^#\” ${cronuser} 2> /dev/null;
echo \”\”;
done)
cat << EOF
【用户信息】
系统登录用户:
${login_user}
${line}
ssh 配置信息:
${ssh_config}
${line}
sudo 配置用户:
${sudo_config}
${line}
定时任务配置:
${crond_config}
${line}
hosts 信息:
${host_config}
EOF
}
# 获取CPU/内存占用TOP10
get_process_top_info() {
top_title=$(top -b n1 | head -7 | tail -1)
cpu_top10=$(top -b n1 | head -17 | tail -11)
mem_top10=$(top -b n1 | head -17 | tail -10 | sort -k10 -r)
cat << EOF
【TOP10】
CPU占用TOP10:
${cpu_top10}
内存占用TOP10:
${top_title}
${mem_top10}
EOF
}
show_dead_process() {
printf \”僵尸进程:\\n\”
ps -al | gawk \'{print $2,$4}\’ | grep Z
}
get_all_info() {
get_systatus_info
echo ${double_line}
get_service_info
echo ${double_line}
get_cpu_info
echo ${double_line}
get_net_info
echo ${double_line}
get_mem_info
echo ${double_line}
get_disk_info
echo ${double_line}
get_process_top_info
echo ${double_line}
get_sys_user
}
main() {
while [[ 1 ]]
do
printMenu
read option
local index=$[ ${option} – 1 ]
case ${options[${index}]} in
\”获取系统信息\”)
get_systatus_info ;;
\”获取服务信息\”)
get_service_info ;;
\”获取CPU信息\”)
get_cpu_info ;;
\”获取系统网络信息\”)
get_net_info ;;
\”获取系统内存信息\”)
get_mem_info ;;
\”获取系统磁盘信息\”)
get_disk_info ;;
\”获取CPU/内存占用TOP10\”)
get_process_top_info ;;
\”获取系统用户信息\”)
get_sys_user ;;
\”输出所有信息\”)
get_all_info > sys.log
printf \”${C_GREEN}信息已经输出到 sys.log 中。${C_RESET}\\n\\n\”
;;
\”退出\”)
exit ;;
*)
clear
echo \”抱歉,不支持此选项\” ;;
esac
done
}
######################################## MAIN ########################################
printHeadInfo
main
printFootInfo
printf \”${C_RESET}\”
系统信息查看2
#!/usr/bin/bash
unset c
color(){
declare -A c=([Error]=31 [Success]=32 [Warning]=33 [Info]=34)
#echo -e \”\\033[${c[$1]}m[`date +%T`]($1) $2\\033[0m\”
printf \”\\033[${c[$1]}m%-10s%-10s %-30s\\033[0m\\n\” \”[`date +%T`]\” \”($1)\” \”$2\”
sleep 0.5
}
cpu(){
cpus=$(grep processor /proc/cpuinfo |wc -l)
cpuModel=$(grep \”model name\” /proc/cpuinfo | uniq | awk -F \’:\’ \'{print $2}\’)
cpuCache=$(grep \”cache size\” /proc/cpuinfo | uniq | awk -F \’:\’ \'{print $2}\’)
printf \”%-10s\\t%-50s\\n\” \”[CPU]\” \”[Info]\”
printf \”%-10s\\t%-50s\\n\” \”cpu核心:\” \”${cpus/ /}核\”
printf \”%-10s\\t%-50s\\n\” \”cpu型号:\” \”${cpuModel/ /}\”
printf \”%-10s\\t%-50s\\n\” \”cpu缓存:\” \”${cpuCache/ /}\”
}
memory(){
memTotal=$(awk -F\’:\’ \’/MemTotal:/{print $2}\’ /proc/meminfo | awk \'{print $1,$2}\’)
memFree=$(awk -F\’:\’ \’/MemFree:/{print $2}\’ /proc/meminfo | awk \'{print $1,$2}\’)
memBuffer=$(awk -F\’:\’ \’/Buffers:/{print $2}\’ /proc/meminfo | awk \'{print $1,$2}\’)
memCached=$(awk -F\’:\’ \’/^Cached:/{print $2}\’ /proc/meminfo | awk \'{print $1,$2}\’)
swapTotal=$(awk -F\’:\’ \’/SwapTotal:/{print $2}\’ /proc/meminfo | awk \'{print $1,$2}\’)
swapFree=$(awk -F\’:\’ \’/SwapFree:/{print $2}\’ /proc/meminfo | awk \'{print $1,$2}\’)
memDevice=$(dmidecode |grep -P -A 5 \”Memory Device\”|grep Size|grep -v \’Range\’ | wc -l)
maxMem=$(dmidecode |grep \”Maximum Capacity\” | awk \'{print $3,$4}\’)
maxHz=$(dmidecode |grep \”Max Speed\” |uniq | awk \'{print $3,$4}\’)
printf \”%-10s\\t%-50s\\n\” \”[Memory]\” \”[Info]\”
printf \”%-10s\\t%-50s\\n\” \”内存总量:\” \”$memTotal\”
printf \”%-10s\\t%-50s\\n\” \”内存剩余:\” \”$memFree\”
printf \”%-10s\\t%-50s\\n\” \”内存写缓:\” \”$memBuffer\”
printf \”%-10s\\t%-50s\\n\” \”内存读缓:\” \”$memCached\”
printf \”%-10s\\t%-50s\\n\” \”临时缓存总量:\” \”$swapTotal\”
printf \”%-10s\\t%-50s\\n\” \”临时缓存剩余:\” \”$swapFree\”
printf \”%-10s\\t%-50s\\n\” \”内存条数:\” \”$memDevice\”
printf \”%-10s\\t%-50s\\n\” \”最大支持内存:\” \”$maxMem\”
printf \”%-10s\\t%-50s\\n\” \”内存频率:\” \”$maxHz\”
}
disk(){
printf \”%-10s\\t%-15s\\t%-30s\\t%-5s\\n\” \”[MountPoint]\” \”[Used]\” \”[FileSystem]\” \”[Size]\”
df -Th | awk \’BEGIN{ORS=\”\\n\”}$2 ~ /(ext|xfs)/{printf \”%-10s\\t%-15s\\t%-30s\\t%-5s\\n\”,$NF,$(NF-1),$1,$3}\’
}
os(){
os_release=$(hostnamectl | awk -F\’: \’ \’/Operating System/{print $2}\’)
os_kernel=$(hostnamectl | awk -F\’: \’ \’/Kernel/{print $2}\’)
hostname=$(hostnamectl | awk -F\’: \’ \’/Static hostname/{print $2}\’)
printf \”%-10s\\t%-20s\\n\” \”[Info]\” \”[Value]\”
printf \”%-20s\\t%-20s\\n\” \”系统版本:\” \”$os_release\”
printf \”%-20s\\t%-20s\\n\” \”内核版本:\” \”$os_kernel\”
printf \”%-20s\\t%-20s\\n\” \”主机名称:\” \”$hostname\”
netIf=$(ip -f inet a | awk \’/^[0-9]/{print $0}\’ |awk -F\’:\’ \'{print $2}\’)
netIfs=$(echo netIf |wc -w)
printf \”%-20s\\t%-20s\\t%-18s\\n\” \”[InterFace]\” \”[IpAddress]\” \”[MacAddress]\”
for i in $netIf
do
# 网卡ip
iname=$(ip -f inet a show dev $i | awk \’/inet/{print $2}\’)
# 网卡mac
mname=$(ip -f link a show dev $i |awk \’/link/{print $2}\’)
printf \”%-20s\\t%-20s\\t%-18s\\n\” \”$i\” \”$iname\” \”$mname\”
done
}
color Info \”开始读取本地信息\”
main(){
color Success \”中央处理器信息\”
# cpu 信息查询函数
cpu
color Success \”内存信息\”
# 内存 信息查询函数
memory
color Success \”网络信息\”
os
# 磁盘信息
color Success \”磁盘信息\”
disk
}
main
#以上关于常用脚本整理(不定时更新)的相关内容来源网络仅供参考,相关信息请以官方公告为准!
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92791.html