1、yum源的配置与使用(5分)
1). 创建一个本地yum源
base源指向https://mirrors.aliyun.com/centos/7/os/x86_64/
epel源指向https://mirrors.aliyun.com/epel/7Server/x86_64/
2). 安装开发包组
①
[base]
name=base
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
enbale=1
gpgcheck=0
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/
enable=1
gpgcheck=0
②.yum groupinstall "Development Tools"
2、复制/etc/ssh/sshd_config 到/tmp/中并更名为sshd_config.bak。将/tmp/sshd_config.bak文件中所有以非#号开头与包含空白字符的行保存至/tmp/sshd_config中。(5分)
cp /etc/sshd_config /tmp/sshd_config.bak
cat /tmp/sshd_config.bak |grep -Ev '^#|^[[:space:]]*$'>/tmp/sshd_config
3、编写脚本/root/bin/sysinfo.sh显示当前主机系统信息,包括主机名,操作系统版本,内核版本,CPU型号,内存大小,硬盘分区(5分)
Vim /root/bin/sysinfo.sh
#!/bin/bash
hostname
cat /etc/redhat-release
uname -r
free -m
fdisk -l
Chmod +x /root/bin/sysinfo.sh
4、给root用户定义别名命令vimnet,相当于vim /etc/sysconfig/network-scripts/ifcfg-ens33,并使root执行history命令时,显示每个命令执行的具体时间。(5分)
echo "alias vimnet="vim /etc/sysconfig//etc/sysconfig/network-scripts/ifcfg-ens33"" >> ~/.bashrc
echo 'HISTTIMEFORMAT="%F %T"' >> ~/.bash_profile
. ~/.bash_profile
. ~/.bashrc
5、指出软链接与硬链接的异同之处(至少四处)(5分)
硬链接
1、硬链接必须在同一个分区中创建,不能跨分区,跨分区只能用软链接
2、硬链接不支持对目录创建,硬链接不支持跨设备跨分区
3、不复制原数据,仅分配一个inode号和文件名
4、硬链接文件使用同一个inode号
5、硬链接工作的相对路径相对于当前目录
6、链接文件没有依赖性关系,链接数会加1
软链接
1、可以对目录进行
2、可以跨分区
3、指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;
4、删除链接原文件,则链接指向失效
5、软链接用相对路径时相对的不是当前工作目录,而是相对软链接工作路径
6、下载编译安装httpd 2.4最新版本,写出安装过程(5分)
1. httpd源码下载
httpd2.4.25下载地址http://hc.apache.org/downloads.cgi
2.将下载的httpd源码包复制到系统路径下,再此存放到了路径/app下,然后tar解压源码包到当前目录下
cd /app
tar xvf httpd-2.4.25.tar.bz2
3. 安装开发包组
yum groupinstall "Development Tools"
4. 查看帮助文件,了解如何安装
cat README
cat INSTALL
5. cd /root/httpd-2.4.25 切换到软件包目录下
./configure --prefix=/app/apache --sysconfdir=/tmp/etc/ --bindir=/tmp/etc --enable-rewrite
指定所有文件默认安装在/app/apache目录下,sysconfdir=/etc/apache/为/etc/配置文件存在目录,bin二进制文件放在/tmp/bin目录下,--enable-rewrite为启用重定向特性
在安装过程观察有无软件包安装错误,若有,则对应安装对应的开发软件包
yum install 包名-devel
6. make 根据makefile 文件,构建应用程序
7. make install 复制文件到相应路径
8. 安成功检测
/etc/ /bin目录存放在/tmp下,其他配置文件在/app/apache目录下
9. 防火墙
centos6
service iptables stop 马上禁用
chkconfig iptables off 下次开机禁用
centos7
systemctl stop firewalld.service 马上禁用
systemctl disable firewalld.service 下次开机禁用
10. 访问测试
netstat -ntl 查看服务对应端口是否打开
iptables -vnL 查看防火墙
/app/apache/bin/apachectl start 开启httpd服务,apachectl的路径为/app/apache/bin/apachectl
11. 将apachectl命令导入PATH环境变量
PATH=PATH:/app/apache/bin/apachectl
10. apachectl start 开启服务
7、过滤ifconfig命令结果中所有大于0且小于255的三位数(5分)
ifconfig | egrep -o "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"
ifconfig | egrep -o "\<25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]"
8、将用户mage被误删除的的家目录恢复,复制/etc/shadow到mage家目录中。并设置只有用户wang可以读取/home/mage/shadow(5分)
cp -a /etc/skel/ /home/mage
cd /home/mage
chown mage:mage mage/
chmod 700 mage/
cp /etc/shadow /home/mage
setfacl -m u:mage:r-- /home/mage/shadow
9、统计/var/log/httpd/access.log日志访问频繁前十的地址,并从大到小排序(5分)
cut -d" " -f1 /var/log/httpd/access.log |sort|uniq -c| sort -nr|head -n10|tr -s " "|cut -d" " -f3
10、开启两个终端,将终端1 中输入命令的执行结果输出,并同时输出到终端2 (5分)
echo "wangnan sb" > /dev/pts/1
11、误删除/lib64/libc.so.6系统库文件,如何恢复之,实验说明(5分)
先进入系统修复模式下
Cp /lib64/libc.so.6 /mnt/sysimage/lib64 /mnt/sysimage为真实系统根目录
12、误删除rpm包命令,如何恢复之,实验说明 (5分)
先进入修复模式下
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
rpm -ivh /mnt/cdrom/Packages/rpm-4.11.3-21.e17.x86_64.rpm --root=/mnt/sysimage 以root的身份将rpm包安装在系统真实目录/mnt/sysimage下
chmod /mnt/sysimage 切换进入真实系统下
mount /dev/cdrom /mnt
rpm -ivh /mnt/Packages/httpd* 测试rpm是否修复成功
13、计算2+4+6+…+96+98+100之和(5分)
echo {2..100..2} | tr -s ' ' '+' | bc
14、取/etc/sysconfig/network-scripts/ifcfg-ens33基名,用两种方法实现(5分)
echo /etc/sysconfig/network-scripts/ifcfg-ens33 |egrep -o '[^/]+?$'
basename /etc/sysconfig/network-scripts/ifcfg-ens33
15、对/etc/目录,分别执行命令,实现以下功能(5分)
(1)按从大到小顺序显示文件列表
ll /etc/ | tr -s " " | cut -d' ' -f 5,9 | sort -n -r | cut -d ' ' -f 2
(2)只显示隐藏文件
ls -aI "[^.]*" /etc
(3)只显示目录
ll -a /etc/ | egrep ^d
(4)按mtime时间显示文件列表
ls -a -t /tmp/
(5)按atime时间显示文件列表
ls -a -ut /tmp/
16、编写/root/bin/excute.sh,实现与用户交互,判断用户给予的参数是否可读,可写,可执行(5分)
#!/bin/bash
read -p "please input fimename " name || exit
[ -r $name ] && echo "file $name have read"
[ -w $name ] && echo "file $name have write"
[ -x $name ] && echo "file $name have excute"
17、编写/root/bin/create.sh可以生成新的脚本包括作者、联系方式、版本、时间和描述等,并且可以直接对其进行编辑,编辑完后自动加上执行权限(5分)
#!/bin/bash
[ $# -gt 1 ] &&{ echo "the args is error";exit;}
[ $# == 0 ] && read -s -p "please input script name: " name || name="$1"
echo "#!/bin/bash
# filename "$name"
# author:danran
# telephone:1709369XXXX
# versions:1.5
# time is `date +%F`
# describe:This is a script to create a template"
>"$name"
chmod +x "$name"
vim "$name"
18、写一个脚本,让它可以传递两个参数后,实现对该参数的加、减、乘、除运算并输出运算后的值(5分)
#!/bin/bash
[ $# != 2 ] && { echo "usage:file.sh num1 num2" ; exit ; }
echo "$1+$2=$[ $1+$2 ]"
echo "$1*$2=$[ $1*$2 ]"
echo "$1-$2=$[ $1-$2 ]"
[ "$2" -eq 0 ] && echo "The divisor is 0 " ||echo "$1/$2=$[ $1/$2 ]"
19、编写/root/bin/wcfile.sh统计/etc目录中的目录的个数,文件的个数,并求出/etc/目录中的目录和文件个数的总和(5分)
#!/bin/bash
dir=`ls -al /etc/ | egrep \(^d\|^.d\) | wc -l`
file=`ls -al /etc/ | egrep \(^-\|^.-\) | wc -l`
let sum=$dir+$file
echo "the dir is $dir;the file is $file;the file and dir sum is $sum"
20、/编写/root/bin/baketc.sh 查找/etc/目录中超过1天未修改的文件,将其压缩备份至/bakup目录。若之前没有备份过则备份之,若存在的备份文件超过了2分钟则备份之,否则退出。备份的格式为YYYY-MM-DD-hh-mm-ss.xz(Y表示年,M表示月,D表示日,h表示时,m表示分,s表示秒)(5分)
#!/bin/bash
ls *.xz > /dev/null || { find /etc -mtime +0 > /app/tar.txt && tar Jcf /backup/
`date "+%F-%H-%M-%S"`.xz -T /app/tar.txt ;exit; }
[ -z `find /backup/*.xz -mmin -2` ] && find /etc -mtime +0 > /app/tar.txt &&
tar Jcf /app/backup/`date "+%F-%H-%M-%S"`.xz -T /app/tar.txt || exit
参考答案
#!/bin/bash
DATE=`date +"%Y-%m-%d-%H-%M-%S"`
WCFILE=`ls /backup | wc -l`
[ -d /backup ] || mkdir /backup
[ $WCFILE -eq 0 ] && find /etc/ -mtime +1 | xargs tar -Jcvf /backup/$DATE\.tar.xz
FILE=$[`ls -lt /backup/* | cut -d" " -f10 | head -1 |tr -dc [:digit:]`+200]
echo "new file old time add two minute was: $FILE"
NOW=$[`date +"%Y%m%d%H%M%S"`]
echo "NOW system time is: $NOW"
[ $FILE -lt $NOW ] && find /etc/ -mtime +1 | xargs tar -Jcvf /backup/$DATE\.tar.xz
有趣的邮件
[test]
name=test
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=0
enabled=1
[test2]
name=test2
baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/
gpgcheck=0
enabled=1
yum -y install msmtp mutt
cat .muttrc
set sendmail="/usr/bin/msmtp"
set use_from=yes