1、yum源的配置与使用(5分)
1) 创建一个本地yum源[base]
Mount /dev/cdrom /mnt
name=local_base
baseurl=file:///mnt/
gpgcheck=0
2) 安装开发包组
yum grouplist
yum groupinstall development tools
2、复制/etc/ssh/sshd_config 到/tmp/中并更名为sshd_config.bak。将/tmp/sshd_config.bak文件中所有以非#号开头与包含空白字符的行保存至/tmp/sshd_config中。(5分)
cp /etc/ssh/sshd_config /tmp/sshd-config.bak
cd /tmp
cat sshd_config.bak | egrep "^[^#].[[:space:]]+." > sshd_config
3、编写脚本/root/bin/sysinfo.sh显示当前主机系统信息,包括主机名,操作系统版本,内核版本,CPU型号,内存大小,硬盘分区(5分)
#!/bin/bash
echo ‘----------------------------------‘
echo ‘system infomation‘
echo ‘hostname:‘hostname
echo ‘system-release:‘cat /etc/centos-release
echo ‘kernel:‘uname -r
echo ‘cpu:‘lscpu | egrep -i "型号名称" | tr -s ‘ ‘ | cut -d‘ ‘ -f2-7
echo ‘mem:‘free -h | egrep -i "mem" | tr ‘:‘ ‘ ‘ | tr -s ‘ ‘ | cut -d‘ ‘ -f2
echo ‘hd:‘lsblk | egrep "sda\>" | tr ‘:‘ ‘ ‘ | tr -s ‘ ‘| cut -d‘ ‘ -f5
echo ‘----------------------------------‘
4、给root用户定义别名命令vimnet,相当于vim /etc/sysconfig/network-scripts/ifcfg-ens33,并使root执行history命令时,显示每个命令执行的具体时间。(5分)
vim .bashrc
alias vimnet= ‘vim /etc/sysconfig/network-scripts/ifcfg-ens33‘
. .bashrc
vim .bash_profile
HISTTIMEFORMAT="%F %T "
. .bash_profile
5、指出软链接与硬链接的异同之处(至少四处)(5分)
一,软链接可以针对文件夹,硬链接不行
二,硬链接和源文件有相同的inode码,软链接和源文件是不同的inode码(inode就是索引字节,用来 存储数据信息,系统能通过indoe值最快的找到相对应的文件)
三,硬链接不能跨分区,软链接可以跨分区
四,删除软链接源文件软链接会失效,删除硬链接源文件硬链接能正常使用
6、下载编译安装httpd 2.4最新版本,写出安装过程(5分)
cd
tar –xf httpd-2.4.25.tar.bz2
cd httpd-2.4.25
vim README
:q
vim INSTALL
:q
yum groupinstall development tools
mkdir /app/apache24
./configure --prefix=/app/apache24
make&&make install
7、过滤ifconfig命令结果中所有大于0且小于255的三位数(5分)
Ip a | egrep -o "\<[0-2][0-9][0-9]\>" | egrep -v "2[5-9]{2}"
8、将用户mage被误删除的的家目录恢复,复制/etc/shadow到mage家目录中。并设置只有用户shixintao可以读取/home/mage/shadow(5分)
cp –r /etc/skel /home/mage #cp -r 递归处理,将指定目录下的所有文件与子目录一并处理
cd /home/mage
chown –R mage:mage mage
cp /etc/shadow .
chmod 000 shadow
setfacl –m u:shixintao:r shadow
setfacl –m u:shixintao:rx /home/mage
9、统计/var/log/httpd/access.log日志访问频繁前十的地址,并从大到小排序(5分)
cat /var/log/httpd/access_log | egrep -o "(\<[0-2][0-9]{1,2}.){3}\<[0-2][0-9]{1,2}\>" | sort | uniq -c | tr -s ‘ ‘ | sort -t‘ ‘ -k2 -rn | head -n10
10、开启两个终端,将终端1 中输入命令的执行结果输出,并同时输出到终端2 (5分)
开终端可以在本地用ctrl+alt+F1-6开启,Xshell可以直接新开终端
终端1为pts/0 终端2为pts/1
ls / |tee /dev/pts/1
11、误删除/lib64/libc.so.6系统库文件,如何恢复之,实验说明(5分)
一,在光盘挂载的情况下重启
二,在读取进度条的时候按下Esc然后使用CD-ROM进行启动
三,选择进入救援模式“rescue”
四,进入救援模式后从当前/lib64中复制一份libc.so.6到/mnt/sysimage/lib64中
五,退出救援模式重启机器完成恢复
12、误删除rpm包命令,如何恢复之,实验说明 (5分)
一,在光盘挂载的情况下重启
二,在读取进度条的时候按下Esc然后使用CD-ROM进行启动
三,选择进入救援模式“rescue”
四,进入救援模式后输入 mkdir /cd创建文件夹
五,mount /dev/sr0 /cd 将光盘挂在/cd上
六,rpm -ivh /cd/Packages/rpm-4.11.3-21.e17.x86_64.rpm --root=/mnt/sysimage/ 将光盘中的rpm包以原来根为基础安装
七,退出救援模式重启机器完成恢复
13、计算2+4+6+…+96+98+100之和(5分)
echo {2..100..2} | tr ‘ ‘ ‘+‘ | bc
14、取/etc/sysconfig/network-scripts/ifcfg-ens33基名,用两种方法实现(5分)
1.echo /etc/sysconfig/network-scripts/ifcfg-ens33 | egrep -o "\<[_0-9a-zA-Z-]+/?$" # \?:匹配其前面的字符1次或0次
2.echo /etc/sysconfig/network-scripts/ifcfg-ens33 | rev | egrep -o "^/?[0-9a-zA-Z-]+\>" | rev
备注: rev命令将文件中的每行内容以字符为单位反序输出,即第一个字符最后输出,最后一个字符最先输出,依次类推。
3.basename /etc/sysconfig/network-scripts/ifcfg-ens33
4..echo /etc/sysconfig/network-scripts/ifcfg-ens33 | egrep -o "\<[[:alpha:]]*\>$"
15、对/etc/目录,分别执行命令,实现以下功能(5分)
(1)按从大到小顺序显示文件列表 -S 以文件大小排序。
ll –S /etc
(2)只显示隐藏文件
l. /etc
ls –d . /etc
(3)只显示目录 -d 将目录象文件一样显示,而不是显示其下的文件
ls –d /etc//
(4)按mtime时间显示文件列表 -t 以时间排序。
ls –t /etc
(5)按atime时间显示文件列表 -u 以文件上次被访问的时间排序。
ls –u /etc
16、编写/root/bin/excute.sh,实现与用户交互,判断用户给予的参数是否可读,可写,可执行(5分)
vim excute.sh
#!/bin/base
read -p "please input file:" file
if [ -e "$file" ] ; then
[ -r "$file" ] && [ -w "$file" ] && [ -x "$file" ] && echo "参数可读可写可执行" && exit
[ -r "$file" ] && [ -w "$file" ] && echo "参数可读可写不能执行" && exit
[ -r "$file" ] && [ -x "$file" ] && echo "参数可读可执行不能写" && exit
[ -r "$file" ] && echo "参数可读不能写不能执行" && exit
[ -w "$file" ] && [ -x "$file" ] && echo "参数可写可执行不能读" && exit
[ -w "$file" ] && echo "参数可写不能执行不能读" && exit
[ -x "$file" ] && echo "参数可执行不能读不能写" && exit
echo "该参数没有任何权限"
else
echo "该文件不存在"
exit
fi
17、编写/root/bin/create.sh可以生成新的脚本包括作者、联系方式、版本、时间和描述等,并且可以直接对其进行编辑,编辑完后自动加上执行权限(5分)
vim /root/bin/create.sh
[ -a "$1" ] && echo "file is exist" && exit
touch "$1"
echo ‘#!/bin/bash‘ >> "$1"
echo "#name:$1" >> "$1"
echo ‘#author:sxt‘ >> "$1"
echo ‘#email:[email protected]‘ >> "$1"
echo ‘#version:1.0‘ >> "$1"
echo ‘#number:02‘ >> "$1"
echo ‘#time:‘date +%F
>> "$1"
chmod u+x "$1"
vim + "$1"
exit
18、写一个脚本,让它可以传递两个参数后,实现对该参数的加、减、乘、除运算并输出运算后的值(5分)
(加减乘除等号与参数之间不要有空格)
#!/bin/bash
read -p "input your Number1: " Num1
read -p "input your Number2: " Num2
ADD=$[ $Num1+$Num2 ]
SUB=$[ $Num1-$Num2 ]
RID=$[ $Num1$Num2 ]
DIV=$[ $Num1/$Num2 ]
echo "$Num1 + $Num2 = $ADD"
echo "$Num1 - $Num2 = $SUB"
echo "$Num1 $Num2 = $RID"
echo "$Num1 / $Num2 = $DIV"
exit
19、编写/root/bin/wcfile.sh统计/etc目录中的目录的个数,文件的个数,并求出/etc/目录中的目录和文件个数的总和(5分)
#!/bin/bash
dnum=find /etc -type d | wc -l
echo /etc中目录个数为"$dnum"个
fnum=find /etc -not -type d | wc -l
echo /etc中文件个数为"$fnum"个
num=$[dnum+fnum]
echo /etc中文件和目录总数为"$num"个
unset dnum
unset num
unset fnum
exit
20、编写/root/bin/baketc.sh 查找/etc/目录中超过1天未修改的文件,将其压缩备份至/bakup目录。若之前没有备份过则备份之,若存在的备份文件超过了2分钟则备份之,否则退出。备份的格式为YYYY-MM-DD-hh-mm-ss.xz(Y表示年,M表示月,D表示日,h表示时,m表示分,s表示秒)(5分)
(# .xz压缩包格式)
vim /root/bin/baketc.shbr/>#!/bin/bash
#name:baketc.sh
#author:chenjingyu
#email:[email protected]
#version:1.0
#number:02
#time:2017-06-15
a=find /bakup -name *.xz
b=find /bakup -mmin +1 -name *.xz
shijian=date +%F‘ ‘%T
if [ -z "$a" ];then
find /etc -mtime +0 |xargs tar -cJf /bakup/"$shijian".xz 2&> /dev/null
echo "备份创建成功"
elif [ -n "$b" ];then
rm -f "$b"
find /etc -mtime +0 |xargs tar -cJf /bakup/"$shijian".xz 2&> /dev/null
echo "备份创建成功,旧备份已删除"
else
echo "上次备份未超过两分钟"
fi
原文地址:http://blog.51cto.com/13859849/2160974