在平常接触Linux时,小编遇到一些简单典型的基础题,在这里就给大家列出来几个,仅供大家平常的练习。
1.将用户mage被误删除的的家目录恢复,复制/etc/shadow到mage家目录中。并设置只有用户wang可以读取/home/mage/shadow。
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最新版本,写出安装过程。
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命令结果中所有大于0且小于255的三位数。
(1)ifconfig |grep -E ‘\<(([1-9])|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-4]))\>‘
(2)ifconfig |grep -E ‘\<((1[0-9][0-9])|(2[0-4][0-9])|(25[0-4]))\>‘
4.误删除/lib64/libc.so.6系统库文件,如何恢复之,实验说明。
##删除 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之和。
echo {2..100..2} | tr " " "+" | bc
6.yum源的配置与使用。创建一个本地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型号,内存大小,硬盘分区。
#!/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日志访问频繁前十的地址,并从大到小排序。
cat /var/log/httpd/access.log | cut -d" " -f1 | sort | uniq -c | sort -nr | head -10
9.误删除rpm包命令,如何恢复之,实验说明 。
[[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型号,内存大小,硬盘分区。
#!/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命令时,显示每个命令执行的具体时间。
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 。
[[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
13.编写/root/bin/excute.sh,实现与用户交互,判断用户给予的参数是否可读,可写,可执行。
[[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.写一个脚本,让它可以传递两个参数后,实现对该参数的加、减、乘、除运算并输出运算后的值。
[[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.指出软链接与硬链接的异同之处(至少四处)。
硬链接:1、相于当给文件增加了一个新名在添加链接时会增加链接数,其inode结
点数不会增加
2、支持绝对路径与相对路径
3、不能跨分区来创建链接
4、硬链接不能对目录来创建
5、硬链接链接到文件被删除时,依旧可以通过链接文件来访问被删文件的
数据
软链接:1、链接到一个文件时,相当于创建了一个新的文件,inode结点会增加
2、软链接链接到的文件被删除时,不可以通过链接文件来访问被删的数据
3、软链接支持跨分区链接
4、软链接支持绝对路径与相对路径但要注意的是不要相对于当前的工作目录
16.取/etc/sysconfig/network-scripts/ifcfg-ens33基名,用两种方法实现。
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中。
[[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表示秒)。
#!/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/目录,分别执行命令,实现以下功能。
(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/目录中的目录和文件个数的总和。
[[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"