纸上得来终觉浅,绝知此事要躬行。
很多沉不下心去做的事情,就不会有进步,到头来会怀疑是自己天赋不足,或怀疑自己不得机遇,空想家永远有多个触不可及的梦想,没有进步的行为那么只有原地踏步的懊恼!
第 1 题
题目:
yum
源的配置与使用- 创建一个本地
yum
源 - 安装开发包组
- 创建一个本地
解答:
#!/bin/env bash
# Filename: config_yum.sh
# 移动原repo文件到backup目录下
yumdir=/etc/yum.repos.d/
mkdir $yumdir/bakcup
mv $yumdir/*.repo $yumdir/backup
# 挂载光盘
umount /dev/sr0 > /dev/null
mount /dev/sr0 /media &>/dev/null
# 增加base.repo文件
cat >base.repo <<EOF
[base]
name=centos7-base
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=0
[epel]
name=centos7-epel
baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/
gpgcheck=0
EOF
# yum元数据缓存,安装"Devlopment Tools"包组
yum makecache >/dev/null
yum groups install "Development Tools" >/dev/null
第 2 题
题目:
- 复制
/etc/ssh/sshd_config
到/tmp/
中并更名为sshd_config.bak
。 - 将
/tmp/sshd_config.bak
文件中所有以非#
号开头与包含空白字符的行保存至/tmp/sshd_config
中。
解答:
cp /etc/ssh/sshd_config /tmp/sshd_config.bak
cat /tmp/sshd_config.bak | grep "^[^#]"| grep "^[^[:space:]*$]"
第 3 题
题目:
- 编写脚本
/root/bin/sysinfo.sh
显示当前主机系统信息,包括主机名,操作系统版本,内核版本,CPU
型号,内存大小,硬盘分区。
解答:
#!/bin/env bash
# Filename: sysinfo.sh
echo "主机名 : $HOSTNAME"
echo "系统版本: `cat /etc/centos-release`"
echo "内核版本: `uname -r`"
echo "CPU型号 :`cat /proc/cpuinfo | grep "model name" |cut -d: -f2 | head -1`"
echo "内存大小: `free -m |grep Mem|tr -s " "|cut -d" " -f2` MB"
echo -e "硬盘分区:\n`df -hT |egrep -o "^/dev/sd.*\>"|tr -s " " | cut -d" " -f1,3|sort`"
第 4 题
题目:
- 给
root
用户定义别名命令vimnet
,相当于vim /etc/sysconfig/network-scripts/ifcfg-ens33
,并使root
执行history
命令时,显示每个命令执行的具体时间。
解答:
#!/bin/env bash
# Filename: ch_bashrc.sh
cat >>~/.bashrc <<EOF
# shortname
alias vimnet="vim /etc/sysconfig/network-scripts/ifcfg-ens33"
# history with timestamp
export HISTTIMEFORMAT="%F %T "
EOF
第 5 题
题目:
- 指出软链接与硬链接的异同之处
解答:
- 软链接就相当于
Windows
的快捷方式,删掉源文件,快捷方式和就失效了,软链接就找不到源文件了。 - 硬链接相当于多个链接指向同一份数据存储区域,每多一个硬链接,硬链接数
+1
,如果一个文件,有n
个硬链接,删除n-1
个硬链接,源文件还在,直到删除所有硬链接,才会删除源文件。
第 6 题
题目:
- 过滤
ifconfig
命令结果中所有大于0
且小于255
的三位数。
解答:
ifconfig | egrep -o "\<((1[0-9]{2}|2[0-4][0-9]|25[0-4]))"
第 7 题
题目:
- 将用户
escape
被误删除的的家目录恢复,复制/etc/shadow
到escape
家目录中,并设置只有用户wang
可以读取/home/escape/shadow
文件。
解答:
# root用户执行下面命令
mkdir /home/escape
chown escape:escape /home/escape
# 查看到wang家目录的权限为700
ll -d /home/wang
chmod 700 /home/escape
# 切换到escape用户
su - escape
cp /etc/skel/\.* .
cp -r /etc/skel/.mozilla/ .
# root用户执行下面命令
cp /etc/shadow /escape
setfacl -m u:wang:r shadow
第 8 题
题目:
- 统计
/var/log/httpd/access.log
日志访问频繁前十的地址,并从大到小排序。
解答:
cat access.log |cut -d" " -f1 |sort |uniq -c |sort -nr|head -n10
第 9 题
题目:
- 开启两个终端,将终端
1
中输入命令的执行结果输出,并同时输出到终端2
。
解答:
COMMAND | tee >/dev/pts/1
第 10 题
题目:
- 误删除
rpm
包命令,如何恢复之,实验说明。
解答:
# 进入Linux的挽救模式,挂载安装
cd /mnt/sysimage/media/Packages
rpm -ivh rpm-4.11.3-21.el7.x86_64.rpm
第 11 题
题目:
- 计算
2+4+6+…+96+98+100
之和。
解答:
echo {2..100..2}|tr " " "+"|bc
第 12 题
题目:
- 取
/etc/sysconfig/network-scripts/ifcfg-ens33
基名,用两种方法实现。
解答:
# 第一种
basename /etc/sysconfig/network-scripts/ifcfg-ens192
# 第二种
echo /etc/sysconfig/network-scripts/ifcfg-ens33 | egrep -o "[^/]+$"
第 13 题
题目:
- 对
/etc/
目录,分别执行命令,实现以下功能:- (1)按从大到小顺序显示文件列表
- (2)只显示隐藏文件
- (3)只显示目录
- (4)按
mtime
时间显示文件列表 - (5)按
atime
时间显示文件列表
解答:
ll -S /etc
ll -d /etc/.*
ll -d /etc/*/
ll -t /etc
ll -u /etc
第 14 题
题目:
- 编写
/root/bin/excute.sh
,实现与用户交互,判断用户给予的参数是否可读,可写,可执行。
解答:
#!/bin/env bash
read -p "请输入文件绝对路径: " path
if [ -e $path ]; then
[ -r $path ] && echo "文件可读" || echo "文件不可读"
[ -w $path ] && echo "文件可写" || echo "文件不可写"
[ -x $path ] && echo "文件可执行" || echo "文件不可执行"
else
echo "文件不存在"
fi
第 15 题
题目:
- 编写
/root/bin/wcfile.sh
统计/etc
目录中的目录的个数,文件的个数,并求出/etc/
目录中的目录和文件个数的总和。
解答:
#!/bin/env bash
etc_dir_count=`ls -d /etc/*/ |wc -l`
etc_sum_count=`ls -d /etc/* |wc -l`
let etc_file_count=$etc_sum_count-$etc_dir_count
echo "目录个数为:$etc_dir_count"
echo "文件个数为: $etc_file_count"
echo "目录文件总和为:$etc_sum_count"
第 16 题
题目:
- 编写
/root/bin/baketc.sh
查找/etc/
目录中超过1
天未修改的文件,将其压缩备份至/bakup
目录。若之前没有备份过则备份之,若存在的备份文件超过了2
分钟则备份之,否则退出。备份的格式为YYYY-MM-DD-hh-mm-ss.xz
(Y 表示年,M 表示月,D 表示日,h 表示时,m 表示分,s 表示秒)。
解答:
#!/bin/env bash
# 查找backup下的文件(注意不要用/backup要用/backup/*)不超过两分钟的文件,如果没有,就打包文件。
flag=`find /backup/* -mmin -2`
if [ -z $flag ]; then
find /etc/ -mtime +1 |xargs tar -Jcvf /backup/`date +"%Y-%m-%d-%H-%M-%S"`.tar.xz
fi