常用脚本整理(不定时更新)

常用脚本整理(不定时更新)mysql物理备份脚本1
#!/bin/bash
set -eUSER\”backup\”
PASSWORD\”backup\”
# 数据库数据目录 #
DATA_DIR\”/data/mysql\”
BIN_INDEX$D

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

(0)
CSDN's avatarCSDN
上一篇 2024年7月4日 下午4:34
下一篇 2024年7月4日 下午4:34

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注