目录
一、获取系统CPU信息
相关脚本:
#!/bin/bash
#
# 判断用户是否为root用户,如果非root用户需要root用户执行脚本
[ $(id -u) -gt 0 ] && echo "请用root用户执行此脚本" && exit 1
sysversion=$(rpm -q centos-release|cut -d- -f3)
line="--------------------------------------------------------------"
# 创建日志目录
logs=/home/root123/logs
[ -d $logs ] || mkdir $logs
# 定义日志文件
sys_check_file="$logs/$(ip addr show ens33|grep -w inet|awk '{print $2}'|awk -F '/' '{print $1}')-`date +%Y%m%d`.txt"
# 获取系统cpu信息
function 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 | column -t
CPU信息:
物理CPU个数:$Physical_CPUs
逻辑CPU个数:$Virt_CPUs
每CPU核心数:$CPU_Kernels
CPU型号:$CPU_Type
CPU架构:$CPU_Arch
EOF
}
get_cpu_info > ${sys_check_file}
执行后输出:
1、id命令
Linux id命令用于显示用户的ID,以及所属群组的ID。
id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。
- -g或--group 显示用户所属群组的ID。
- -G或--groups 显示用户所属附加群组的ID。
- -n或--name 显示用户,所属群组或附加群组的名称。
- -r或--real 显示实际ID。
- -u或--user 显示用户ID。
- -version 显示版本信息。
2、rpm命令
RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”。
(1)rpm 执行安装包
二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。
(2)常用命令组合:
- -ivh:安装显示安装进度--install--verbose--hash
- -Uvh:升级软件包--Update;
- -qpl:列出RPM软件包内的文件信息[Query Package list];
- -qpi:列出RPM软件包的描述信息[Query Package install package(s)];
- -qf:查找指定文件属于哪个RPM软件包[Query File];
- -Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
- -e:删除包
查询指定软件是否已安装: rpm -q <软件名>
3、cut命令
cut用来从标准输入或文本文件中剪切列或域。
- -c list 指定剪切字符数。
- -f field 指定剪切域数。
- -d 指定与空格和t a b键不同的域分隔符。
(1)-c用来指定剪切范围,如下所示:
-c 1,5-7 剪切第1个字符,然后是第5到第7个字符。
-c 1-50 剪切前50个字符。
(2)-f 格式与-c 相同:
-f 1,5 剪切 第1域,第5域。
-f 1,10-12 剪切第1域,第10域到第12域。
4、IP命令
linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。
// 查看指定网卡信息
ip addr show ens33
// 激活和停止网口
ip link set ppp0 up
ip link set ppp0 down
// 设置IP地址
ip addr add 192.168.0.193/24 dev ens33
// 列出路由条目
ip route (show)
// 显示IP地址信息,偏向于上层。
ip address (show)
// 显示链路层的信息,更底层,偏向于物理层
ip link (show)
5、sort命令
sort -u 去重 ,默认安装ASCII码升序排列
## sort -u 去重
cat test_sort.txt |sort -u
sort -r ,降序排序,sort默认升序
## sort 默认升序
cat test_sort.txt |sort
## sort -r 降序
cat test_sort.txt |sort -r
-g 、-n ,按照数值排序
## sort 默认升序,但默认按照字符串比较,会出现2 大于10的情况
cat test_sort.txt |sort
## 按照常规数值排序
cat test_sort.txt |sort -g
## 按照字符串数值排序
cat test_sort.txt |sort -n
-t (设置分隔符)和-k (指定某列)
## sort -t -k
cat test_sort.txt |sort -n -t "|" -k 3
6、uniq命令
uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
uniq 可检查文本文件中重复出现的行列。
-c: 在每列旁边显示该行重复出现的次数。
-d: 仅显示重复出现的行列,显示一行。
-D: 显示所有重复出现的行列,有几行显示几行。
-u: 仅显示出一次的行列
-i: 忽略大小写字符的不同
-f Fields: 忽略比较指定的列数。
-s N: 忽略比较前面的N个字符。
-w N: 对每行第N个字符以后的内容不作比较。
当重复的行不相邻时,uniq 命令是不起作用的。所以,经常需要跟 sort 命令一起使用。
7、wc命令
wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。
该命令各选项含义如下:
- - c 统计字节数。
- - l 统计行数。
- - w 统计字数。
8、column命令
将文本结果转换为整齐的表格,上下对齐。
默认的分隔符是空格,可以使用-s指定分隔符,参数-t用于根据-s指定的分隔符(默认为空格)将一行创建出几列。
$ cat abc.txt
a:b:c:d:e
$ column -t -s: abc.txt
a b c d e
二、获取系统内存信息
脚本示例:
#!/bin/bash
#
# 判断用户是否为root用户,如果非root用户需要root用户执行脚本
[ $(id -u) -gt 0 ] && echo "请用root用户执行此脚本" && exit 1
sysversion=$(rpm -q centos-release|cut -d- -f3)
line="--------------------------------------------------------------"
# 创建日志目录
logs=/home/root123/logs
[ -d $logs ] || mkdir $logs
# 定义日志文件
sys_check_file="$logs/$(ip addr show ens33|grep -w inet|awk '{print $2}'|awk -F '/' '{print $1}')-`date +%Y%m%d`.txt"
# 获取系统内存信息
function get_mem_info(){
check_mem=$(free -m)
MemTotal=$(grep MemTotal /proc/meminfo|awk '{print $2}') #KB
MemFree=$(grep MemFree /proc/meminfo|awk '{print $2}')
let MemUsed=$MemTotal-$MemFree
report_MemUsedPercent=$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")"%"
report_MemTotal=$(($MemTotal/1024))"MB"
report_MemFree=$(($MemFree/1024))"MB"
cat <<EOF
系统内存信息:
${check_mem}
${line}
总共内存:$report_MemTotal
空闲内存:$report_MemFree
内存使用率:$report_MemUsedPercent
EOF
}
get_mem_info > ${sys_check_file}
执行结果:
free命令
Linux free命令用于显示内存状态。
free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
参数说明:
- -b 以Byte为单位显示内存使用情况。
- -k 以KB为单位显示内存使用情况。
- -m 以MB为单位显示内存使用情况。
- -h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。
- -o 不显示缓冲区调节列。
- -s <间隔秒数> 持续观察内存使用状况。
- -t 显示内存总和列。
- -V 显示版本信息。
[root@localhost logs]# free -h
total used free shared buff/cache available
Mem: 1.8G 148M 1.5G 9.5M 156M 1.5G
Swap: 2.0G 0B 2.0G
Mem 行(第二行)是内存的使用情况。
Swap 行(第三行)是交换空间的使用情况。
total 列显示系统总的可用物理内存和交换空间大小。
used 列显示已经被使用的物理内存和交换空间。
free 列显示还有多少物理内存和交换空间可用使用。
shared 列显示被共享使用的物理内存大小。
buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。
available 列显示还可以被应用程序使用的物理内存大小。
swap:
当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存