一:用sed 命令修改/etc/fstab文件,删除文件中的空行,注释行,并保留文件备份(7分)
sed -i.bak '/^#/d;/^$/d' /etc/fstab
sed -ri.bak '/^(#|$)/d' /etc/fstab
[root@lgxtest1 ~]#cat /etc/fstab
/dev/mapper/rl-root / xfs defaults 0 0
UUID=435a3876-efc3-4865-8164-72b9240531ff /boot xfs defaults 0 0
/dev/mapper/rl-swap none swap defaults 0 0
192.168.29.100:/data/www /var/www/html/wp-content/uploads nfs defaults,_netdev 0 0
二: 用 find 命令查找出 /var/ 目录中大于1M且以db结尾的文件(7分)
find /var/ -name *.db -size +1M
[root@lgxtest1 ~]#find /var/ -name *.db -size +1M
/var/lib/mlocate/mlocate.db
/var/lib/pgsql/.cache/tracker/meta.db
/var/cache/dnf/packages.db
三: 先判断当前主机是否安装了nginx包,如果没安装,则执行命令安装,如果己安装,则执行命令卸载,用短路运算实现(rocky8.6)(7分)
which nginx && yum remove nginx || yum install nginx
四:请用 rpm 命令列出 nginx 包中所有的配置文件(7分)
rpm -qc nginx
[root@lgxtest1 ~]#rpm -qc nginx
/etc/logrotate.d/nginx
/etc/nginx/fastcgi.conf
/etc/nginx/fastcgi.conf.default
/etc/nginx/fastcgi_params
/etc/nginx/fastcgi_params.default
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/mime.types.default
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default
/etc/nginx/scgi_params
/etc/nginx/scgi_params.default
/etc/nginx/uwsgi_params
/etc/nginx/uwsgi_params.default
/etc/nginx/win-utf
五: 新增一块20G的硬盘,分三个区,大小分别是3GB,4GB,5GB,将这三个分区做成物理卷,然后创建卷组,在该卷组上创建一个6GB的逻辑卷,挂载至/log/ 目录下,再将该逻辑卷扩容至10GB,请写出实现步骤,文件系统不限(7分)
1.给主机添加一块20G的硬盘,lsblk -f 查看新添加的设备
2.fdisk /dev/nvme0n2 进行分区/dev/nvme0n2p1(3G) /dev/nvme0n2p2 (4G) /dev/nvme0n2p3 (5G)
3.将三个分区创建成物理卷
pvcreate /dev/nvme0n2p1 /dev/nvme0n2p2 /dev/nvme0n2p3
[11:30:00 root@lgxtest1 ~]#pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p2 rl lvm2 a-- <49.00g 0
/dev/nvme0n2p1 testvg0 lvm2 a-- <3.00g 1.99g
/dev/nvme0n2p2 testvg0 lvm2 a-- <4.00g <4.00g
/dev/nvme0n2p3 testvg0 lvm2 a-- <5.00g 0
4.将三个分区创建成名为testvg0 的卷组
vgcreate testvg0 /dev/nvme0n2p1 /dev/nvme0n2p2 /dev/nvme0n2p3
[11:27:33 root@lgxtest1 ~]#vgs
VG #PV #LV #SN Attr VSize VFree
rl 1 2 0 wz--n- <49.00g 0
testvg0 3 1 0 wz--n- <11.99g <5.99g
5.在卷组testvg0上创建6G的逻辑卷
lvcreate -L 6G -n lv-test testvg0
[11:30:13 root@lgxtest1 ~]#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rl -wi-ao---- 46.96g
swap rl -wi-ao---- 2.03g
lv-test testvg0 -wi-a----- 6.00g
6.将逻辑卷挂载到/log目录下,需要提前创建好目录
mkdir /log
7.临时挂载
mount /dev/testvg0/lv-test /log
8.永久挂载
查看逻辑卷UUID
[11:32:28 root@lgxtest1 ~]#lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
nvme0n2
├─nvme0n2p1 LVM2_m JlG8Gr-TNqI-Oh2e-Z5AU-8t1s-z0gE-3pDqmR
│ └─testvg0-lv--test
│ ext4 5cc8aaea-f321-4ab8-9392-0d60d0434ea3
├─nvme0n2p2 LVM2_m 8GuqMC-S1Gz-S9LK-tSd6-cvdJ-Q22T-TAEdG2
└─nvme0n2p3 LVM2_m Q0m0Lw-YIly-waqh-eCps-duLi-vU06-t0IsKb
└─testvg0-lv--test
ext4 5cc8aaea-f321-4ab8-9392-0d60d0434ea3
vim /etc/fstab //修改配置文件添加设备挂载点
UUID=5cc8aaea-f321-4ab8-9392-0d60d0434ea3 /log ext4 defaults 0 0
mount -a //读取/etc/fstab中配置的挂载信息
df -h
/dev/mapper/testvg0-lv--test 5.9G 24M 5.6G 1% /log
9.将逻辑卷扩容至10G
lvextend -r -L +4G /dev/testvg0/lv-test
df -h
/dev/mapper/testvg0-lv--test 9.8G 27M 9.3G 1% /log
六:根据下列命令执行结果,写出你能读出来的信息(7分)
[mage@rocky86 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 199G 0 part
├─rl-root 253:0 0 70G 0 lvm /
├─rl-swap 253:1 0 2G 0 lvm [SWAP]
└─rl-home 253:2 0 127G 0 lvm /home
硬盘sda 200G,有sda1,sda2两个分区
sda1 分区为1G大小,part类型,挂载点 /boot
sda2 分区为199G大小,part类型,有三个逻辑卷(rl-root,rl-swap,rl-home)
rl-root逻辑卷为70G大小,lvm类型,挂载点 /
rl-swap逻辑卷为2G大小,lvm类型,挂载点 [swap]
rl-home逻辑卷为127G大小,lvm类型,挂载点 /home
七: 请配置一块网卡,IP地址是 10.0.0.110,子网掩码是24位,网关是 10.0.0.2,DNS分别是 10.0.0.2 和 114.114.114.114,请写出配置文件内容,另外,写一个脚本,配置成别名,该别名对 root用户永久生效,要求传入网卡设备名可以让修改后的内容重载生效。(8分)
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.110
PREFIX=24
GATEWAY=10.0.0.2
ONBOOT=yes
DNS1=10.0.0.2
DNS2=114.114.114.114
1.创建脚本vim net.sh
#!/bin/bash
eth=$1
ip=$2 //$2-$6参数设置为固定值,执行脚本只需要输入网卡名修改为固定的配置文件内容
prefix=$3
getway=$4
dns1=$5
dns2=$6
file=/etc/sysconfig/network-scripts/ifcfg-$eth
dn2 (){
grep "DNS2" $file >/dev/null||echo "#DNS2=" >> $file
}
setconf (){
sed -i "s/^.*IPADDR.*$/IPADDR=$ip/" $file
sed -i "s/^.*PREFIX.*$/PREFIX=$prefix/" $file
sed -i "s/^.*GATEWAY.*$/GATEWAY=$getway/" $file
sed -i "s/^.*DNS1.*$/DNS1=$dns1/" $file
sed -i "s/^.*DNS2.*$/DNS2=$dns2/" $file
}
up (){
nmcli connection reload
nmcli connection up $eth
}
dn2
setconf
up
2.在root家目录修改.bashrc文件
vim .bashrc
alias net='bash /root/net.sh'
source .bashrc //生效文件
3.运行测试
[root@lgxtest1 ~]#net eth0 192.168.29.225 24 192.168.29.2 192.168.1.1 114.114.114.114
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/12)
[root@lgxtest1 ~]#cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=192.168.29.225
PREFIX=24
GATEWAY=192.168.29.2
ONBOOT=yes
DNS1=192.168.1.1
DNS2=114.114.114.114
八: 请描述一下一个网络请求从一台设备到另一台设备的具体过程(10分)
应用层:应用层发起网络数据请求
传输层:封装应用层请求的进程端口
网络层:将传输层的数据封装在网络层协议数据包IP中
数据链路层:将网络层数据填好MAC地址,数据帧包含源MAC地址和目标MAC地址。
九:当执行shell脚本时,可向shell脚本传参,请说明 $0, $#,$@,$* 这几个参数的含义(10分)
$0 对应执行脚本时的命令包括命令中路径显示
$# 获取对应传入脚本的参数个数,统计的参数不包括 $0。
$@ 显示所有参数的列表,不包括 $0。
$* 显示其值和 $@ 相同。但 "$*" 和 "$@" 有所不同。"$*" 把所有参数合并成一个字符串,而 "$@" 会得到一个字符串参数数组。
十: 写一个脚本,计算出100以内能被3整除的数之和,以及能被4整除的数之后,然后再输出这两个数字(10分)
#!/bin/bash
sum1=0
sum2=0
for ((i=3; i<=100; i++)); do
num1=$[i%3]
[ $num1 -eq 0 ] && let sum1+=i
done
for ((j=4; j<=100; j++)); do
num2=$[j%4]
[ $num2 -eq 0 ] && let sum2+=j
done
echo "被3整除数之和:$sum1"
echo "被4整除数之和:$sum2"
[root@lgxtest1 ~]#./num.sh
被3整除数之和:1683
被4整除数之和:1300
十一:写一个脚本,打印输出8行8列的国际象棋棋盘,使用红黄两色(10分)
#!/bin/bash
for ((i=1; i<=8; i++));do
for ((j=1; j<=8; j++));do
sum=$[i+j]
if [ $[sum%2] -eq 0 ];then
echo -ne "\033[41m \033[0m"
else
echo -ne "\033[43m \033[0m"
fi
done
echo
done
十二:写一个脚本,生成10个随机数放到一个数组中,再将该数组中的元素从小大到排序进行输出(10分)
#!/bin/bash
declare -a numbers
for ((i=0; i<10; i++));do
numbers[$i]=$RANDOM
done
echo "原顺序:${numbers[*]}"