出门莫恨无人随,书中车马多如簇。这篇文章主要讲述马哥N63第六周作业相关的知识,希望能为你提供帮助。
就业第6周作业
1、编写脚本实现登陆远程主机。(使用expect和shell脚本两种形式)。
需要先安装expect安装包
#yum install -y expect
安装完后就可以使用expect命令了
expect脚本:
shell脚本:
2、生成10个随机数保存于数组中,并找出其最大值和最小值
shell脚本如下:
#!/bin/bash
declare -i min max
declare -a nums
for ((i=0;
i<
10;
i++));
do
nums[$i]=$RANDOM
[ $i -eq 0 ] &
&
min=$nums[$i]
&
&
max=$nums[$i]&
&
continue
[ $nums[$i] -gt $max ] &
&
max=$nums[$i]
[ $nums[$i] -lt $min ] &
&
min=$nums[$i]
done
echo “All numbers are $nums[*]”
echo Max is $max
echo Min is $min
3、输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序
1)升序
脚本:
#!/bin/bash
#Sum=15
arr=( 4 36 2 100 101 98 2222 1001 999 99999
5 78 136 58 588 )
#for ((i=1;
i<
=$Sum;
i++));
do
#
read -p "请输入1个数到数组,共[$Sum]个数,这是第[$i]个" arr[$i]
#done
len=$#arr[*]
echo "原始数组是:"
$arr[*]
for ((j=0;
j<
$len;
j++));
do
for ((i=0;
i<
$len-1;
i++));
do
if [ $arr[$i] -gt $arr[$i+1] ];
then
x=$arr[$i]
arr[$i]=$arr[$i+1]
arr[$i+1]=$x
# echo $arr[$i]
"<
====>
" $arr[$i+1]
fi
done
#echo "第"$j"次整理后变成"
$arr[*]
done
echo "整理后的数组是:"
$arr[*]
2)降序:
脚本:
#!/bin/bash
#Sum=15
arr=( 4 36 2 100 101 98 2222 1001 999 99999
5 78 136 58 588 )
#for ((i=1;
i<
=$Sum;
i++));
do
#
read -p "请输入1个数到数组,共[$Sum]个数,这是第[$i]个"
arr[$i]
#done
len=$#arr[*]
echo "原始数组是:"
$arr[*]
for ((j=0;
j<
$len;
j++));
do
for ((i=0;
i<
$len-1;
i++));
do
if [ $arr[$i] -lt $arr[$i+1] ];
then
x=$arr[$i]
arr[$i]=$arr[$i+1]
arr[$i+1]=$x
# echo $arr[$i]
"<
====>
" $arr[$i+1]
fi
done
#echo "第"$j"次整理后变成"
$arr[*]
done
echo "整理后的数组是:"
$arr[*]
4、总结查看系统负载的几种命令,总结top命令的指标大概什么含义(不要求全部写出来)
1)查看系统负载的几种命令:
uptime:查看系统平均负载
mpstat:百分比显示CPU利用率的各项指标
top和htop:查看进程的实时状态
free:查看内存空间的使用状态
pmap:查看进程对应的内存映射,可以看到进程依赖的子模块占用的内存数量,可以以此判断OOM
vmstat:查看虚拟内存的信息,可以以用户定义的间隔不断刷新状态,能够看到内存与SWAP、磁盘之间的IO情况;
iostat:能够看到更丰富的IO性能状态,可以自定义刷新间隔判断哪块硬盘的IO比较繁忙;-x参数可以看到磁盘基于扇区的IO,队列长度,处理时间等
iotop:以top方式监控磁盘的I/O,实时监控,而且可以只显示正在执行读写的进程,提供很多非交互式参数;
iftop:显示网络带宽的使用情况,查看访问当前主机的流量的实时信息,实时连接等;
nload:只能以接口为单位查看实时吞吐量,看不到连接信息,只有速率信息;
2)top命令的各项指标:
Tasks:当前总进程数
running:正在运行的进程数
sleeping:休眠的进程数
stopped:停止的进程数
zombie:僵尸进程数
us:用户空间
sy:内核空间
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时间
PID:进程PID号
USER:启动进程的用户
PR:进程优先级
NI:nice值,负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:共享内存大小,单位kb
S:进程状态。D为不可中断的睡眠状态,R为运行,S为睡眠,T为跟踪/停止,Z为僵尸进程
%CPU:上次更新到现在的CPU时间占用比
%MEM:进程使用的物理内存百分比
TIME+:进程使用的CPU时间总计,单位1/100秒
COMMAND:进程名称(命令名/命令行)
5、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
1)for循环:
脚本
#!/bin/bash
#
NetId=192.168.116.
for HostId in 1..254;
do
if /bin/ping -c 1 -W 1 $NetId$HostId >
/dev/null;
then
echo "$NetId$HostId lived,Ping Test Successed"
else
echo "$NetId$HostId not lived,Ping Test Failed"
fi
&
done
wait
2)while循环:
脚本
#!/bin/bash
#
NetId=192.168.116.
declare -i HostId=1
while [ $HostId -le 254 ];
do
/bin/ping -c 1 -W 1 $NetId$HostId >
/dev/null
if [ $? -eq 0 ];
then
echo "$NetId$HostId
lived,Ping Test Successed"
else
echo "$NetId$HostId not
lived,Ping Test Failed"
fi
&
let HostId++
done
wait
6、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间。
1)备份脚本内容:
#!/bin/bash
DIR=etcbak-`date -d -1 day +%Y-%m-%d-%H`
【马哥N63第六周作业】tar -Jcvf /backup/$DIR.tar.xz /etc/
&
>
/dev/null
2)计划任务配置文件内容:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
30 1 * * 1-5 bash etcback.sh
推荐阅读
- gitlab安装备份与还原
- 操作系统学习
- C/C++气象数据中心实战,手把手教你做工业级项目
- #yyds干货盘点#k8s中的核心组件
- 什么是数据包嗅探(如何理解?)
- 什么是加密货币(如何通俗理解加密货币?)
- Python使用Selenium的SMS Bomber
- 如何理解C中的静态函数(如何使用?)
- Python函数名称中允许使用哪些字符()