第一階段測試題
1.將用戶mage被誤刪除的的家目錄恢復,復制/etc/shadow到mage家目錄中。並設置只有用戶wang可以讀取/home/mage/shadow(5分)
rm -rf /home/mage
cp -a /etc/skel/ /home/mage
chown -R mage.mage /home/mage
cp /etc/shadow /home/mage
setfacl -m u:wang:rx /home/mage/
setfacl -m u:wang:r /home/mage/shadow
su - wang
cat /home/mage/shadow
2.下載編譯安裝httpd 2.4最新版本,寫出安裝過程(5分)
et apr-1.5.0.tar.bz2 apr-util-1.5.2.tar.bz2 httpd-2.4.10.tar.bz2
yum install pcre-deve
安裝apr
tar -xvf apr-1.5.0.tar.bz2
cd apr-1.5.0/
./configure --prefix=/usr/local/apr
make
make install
安裝apr-util
tar -xvf apr-util-1.5.2.tar.bz2
cd apr-util-1.5.2/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make
make install
安裝apache
tar -xvf httpd-2.4.10.tar.bz2
cd httpd-2.4.10
./configure --prefix=/usr/local/rjnnhttp
--sysconfdir=/etc/rjnnhttp
--with-pcre
--with-apr=/usr/local/apr
--with-apr-util=/usr/local/apr-util
make
make install
vim /etc/profile.d/rjnn.sh export PATH=$PATH:/usr/local/rjnnhttp
vim /etc/man_db_conf
MANDATORY_MANPATH /usr/local/rjnnhttp/man
links
3.過濾ifconfig
ifconfig |grep -E ‘\<(([1-9])|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-4]))\>‘
ifconfig |grep -E ‘\<((1[0-9][0-9])|(2[0-4][0-9])|(25[0-4]))\>‘
4.誤刪除/lib64/libc.so.6系統庫文件,如何恢復之,實驗說明(5分)
##刪除 libc.so.6
1、查找libc.so.6 ldd `which ls`
2、rm -rf/lib64/libc.so.6
##如何恢復
3、重啟計算機,在開機界面的時候按下一次esc鍵,設置為從光盤引導啟動。
##註:此處linux的環境是面vmware 虛擬機中。別的機器光盤啟動方式不同。
4、進入光盤求援模式,6 與 7的界面選項根據實際情況選擇。
6、復制/lib64/libc.so.6 到 /mnt/sysimage/lib64
7、關閉selinux
vim /etc/sysconfig/selinux
將SELINUX=enforcing 改成 SELINUX=disabled
8、重啟計算機
5.計算2+4+6+…+96+98+100之和(5分)
echo {2..100..2} | tr " " "+" | bc
6.yum源的配置與使用(5分)
創建一個本地yum源
base源指向https://mirrors.aliyun.com/centos/7/os/x86_64/
epel源指向https://mirrors.aliyun.com/epel/7Server/x86_64/
vim /etc/yum.repos.d/CentOS.repo
[base]
name=base
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=0
enabled=1
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/
gpgcheck=0
enabled=1
7.編寫腳本/root/bin/sysinfo.sh顯示當前主機系統信息,包括主機名,操作系統版本,內核版本,CPU型號,內存大小,硬盤分區(5分)
#!/bin/bash
#
echo "HOSTNAME=`uname -n`"
echo "IPADDR=`ifconfig |grep inet|head -1|tr -s " " |cut -d " " -f3`"
echo "OPERATION=`uname -o`"
echo "RELEASE=`uname -r`"
echo "CPUTYPE=` lscpu |grep "Model name" `"
echo "MEMSIZE=`free`"
echo "DISKINFO=`lsblk`"
8.統計/var/log/httpd/access.log日誌訪問頻繁前十的地址,並從大到小排序(5分)
cat /var/log/httpd/access.log | cut -d" " -f1 | sort | uniq -c | sort -nr | head -10
9.誤刪除rpm包命令,如何恢復之,實驗說明 (5分)
[[email protected] ~]# which rpm
/usr/bin/rpm
[[email protected] ~]# rm -rf /usr/bin/rpm
1、與上題一樣進入救援模式
2、mkdir /mnt/cdrom
3、mount /dev/cdrom /mnt/cdrom ##掛載光盤
4、安裝rpm軟件, rpm -ivh /mnt/cdrom/Packages/rpm-4.11.3-17.el7.x86_64.rpm --force
--root=/mnt/sysimage
5、重新啟用計算機
10.編寫腳本/root/bin/sysinfo.sh顯示當前主機系統信息,包括主機名,操作系統版本,內核版本,CPU型號,內存大小,硬盤分區(5分)
#!/bin/bash
#
echo "HOSTNAME=`uname -n`"
echo "IPADDR=`ifconfig |grep inet|head -1|tr -s " " |cut -d " " -f3`"
echo "OPERATION=`uname -o`"
echo "RELEASE=`uname -r`"
echo "CPUTYPE=` lscpu |grep "Model name" `"
echo "MEMSIZE=`free`"
echo "DISKINFO=`lsblk`"
11.給root用戶定義別名命令vimnet,相當於vim /etc/sysconfig/network-scripts/ifcfg-ens33,並使root執行history命令時,顯示每個命令執行的具體時間。(5分)
echo "alias vimnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eno16777736‘" >> /root/.bashrc
. /root/.bashrc
vimnet
echo ‘HISTTIMEFORMAT="%F %T"‘ >>/root/.bashrc
. /root/.bashrc
history
12.開啟兩個終端,將終端1 中輸入命令的執行結果輸出,並同時輸出到終端2 (5分)
[[email protected] ~]# tty
/dev/pts/0
[[email protected] ~]# date | tee /dev/pts/1
Sat Jun 17 19:23:39 CST 2017
## 另一個終端
[[email protected] ~]# Sat Jun 17 19:23:32 CST 2017
Sat Jun 17 19:23:39 CST 2017
13.編寫/root/bin/excute.sh,實現與用戶交互,判斷用戶給予的參數是否可讀,可寫,可執行(5分)
[[email protected] ~]# excute.sh /etc/passwd
Can read
Can write
[[email protected] ~]# excute.sh /bin/ls
Can read
Can write
Can execute
[[email protected] ~]# cat /root/bin/excute.sh
#Author: jin.ren
#QQ: 1922006891
#Version: 3.0
#Date :2017-06-13-19-39-34
#test
[ -r $1 ] && echo "Can read"
[ -w $! ] && echo "Can write"
[ -x $1 ] && echo "Can execute"
14.寫一個腳本,讓它可以傳遞兩個參數後,實現對該參數的加、減、乘、除運算並輸出運算後的值(5分)
[[email protected] ~]# vim /root/bin/let.sh
[[email protected] ~]# let.sh
Please input Number133
Please input Number22
33+2=35
33-2=31
33*2=66
33/2=16
[[email protected] ~]# cat /root/bin/let.sh
#Author: jin.ren
#QQ: 1922006891
#Version: 3.0
#Date :2017-06-13-19-44-55
#operation
read -p "Please input Number1" NUM1
read -p "Please input 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"
15.指出軟鏈接與硬鏈接的異同之處(至少四處)(5分)
硬鏈接:1、相於當給文件增加了一個新名在添加鏈接時會增加鏈接數,其inode結點數不會增加
2、支持絕對路徑與相對路徑
3、不能跨分區來創建鏈接
4、硬鏈接不能對目錄來創建
5、硬鏈接鏈接到文件被刪除時,依舊可以通過鏈接文件來訪問被刪文件的數據
軟鏈接:1、鏈接到一個文件時,相當於創建了一個新的文件,inode結點會增加
2、軟鏈接鏈接到的文件被刪除時,不可以通過鏈接文件來訪問被刪的數據
3、軟鏈接支持跨分區鏈接
4、軟鏈接支持絕對路徑與相對路徑但要註意的是不要相對於當前的工作目錄
16.取/etc/sysconfig/network-scripts/ifcfg-ens33基名,用兩種方法實現(5分)
echo "/etc/sysconfig/network-scripts/ifcfg-ens33" |rev|cut -d"/" -f1|rev
echo "/etc/sysconfig/network-scripts/ifcfg-ens33" |grep -o ‘[^/]*$‘
basename /etc/sysconfig/network-scripts/ifcfg-ens33
17.復制/etc/ssh/sshd_config 到/tmp/中並更名為sshd_config.bak。將/tmp/sshd_config.bak文件中所有以非#號開頭與包含空白字符的行保存至/tmp/sshd_config中。(5分)
[[email protected] ~]# cp /etc/sshd_config /tmp/sshd_config.bak
cat /tmp/sshd_config.bak |grep -Ev ‘^#|^[[:space:]]*$‘>/tmp/sshd_config
18.編寫/root/bin/baketc.sh 查找/etc/目錄中超過1天未修改的文件,將其壓縮備份至/bakup目錄。若之前沒有備份過則備份之,若存在的備份文件超過了2分鐘則備份之,否則退出。備份的格式為YYYY-MM-DD-hh-mm-ss.xz(Y表示年,M表示月,D表示日,h表示時,m表示分,s表示秒)(5分)
#!/bin/bash
# Author: Jin.Ren
# Date: 20170611
#
DATE=`date +"%Y-%m-%d-%H-%M-%S"`
WCFILE=`ls /backup | wc -l`
[ -d /backup ] || mkdir /backup
[ $WCFILE -eq 0 ] && find /etc/ -mtime +1 >> /dev/null | xargs tar -Jcvf /backup/$DATE\.tar.xz
FILE=$[`ls -lt /backup/* | cut -d" " -f9 | 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
19.對/etc/目錄,分別執行命令,實現以下功能(5分)
(1)按從大到小順序顯示文件列表
(2)只顯示隱藏文件
(3)只顯示目錄
(4)按mtime時間顯示文件列表
(5)按atime時間顯示文件列表
1)ls -Sl /etc/
2)ls -d /etc/.*
3)ls -ld /etc/
4)ls -lt /etc
5)ls -lut /etc
20.編寫/root/bin/wcfile.sh統計/etc目錄中的目錄的個數,文件的個數,並求出/etc/目錄中的目錄和文件個數的總和(5分)
[[email protected] ~]# wcfile.sh
file number was 3099
directory number was 729
file and directory was 3828
[[email protected] ~]# cat /root/bin/wcfile.sh
#Author: jin.ren
#QQ: 1922006891
#Version: 3.0
#Date :2017-06-17-21-02-52
#wc etc file
FILE=`find /etc/ -not -type d | wc -l`
DIR=`find /etc/ -type d | wc -l`
AND=$[$FILE+$DIR]
echo "file number was $FILE"
echo "directory number was $DIR"
echo "file and directory was $AND"
第一階段測試題