前言

  金三银四面试盛季还不知道shell复习那些题的小伙伴看过来啦,在这里博主整理了一些选择题和脚本实战题公家参考,祝运维的同胞们在运维之路越走越远…

一、选择(每题1分)

1.在shell中变量的陚值有四种方法,其中采用name=12的方法称()。
A.直接赋值         B.使用read命令
C.使用命令行参数      D.使用命令的输出

2.哪个命令可以从文本文件的每-行中截取指定内容的数据。()
A.cp             B.dd
C.fmt            D. cut

3.在Shell脚本中,用来读取文件内各个域的内容并将其赋值给Shell变量的命令是()。
A. fold            B. join
C.tr              D. read

4.退出交互模式的shell,应键入()。
A.;              B.^q
C.exit              D.quit

5.是shell具有的功能和特点的是().
A.管道            B.输入输出重定向
C.执行后台进程        D.处理程序命令

6.下列对shell变量FRUIT操作,正确的是()。
A.为变赋值:$FRUIT=apple     B.显示变量的值:fruit=apple
C.显示变量的值echo “$FRUIT”    D.判断变量是否有值:[-f -$FRUITII ]

7.办公使用代理服务器(PRoxy server)访问internet的主要功能不包括( )
A.突破对某些网站的访问限制      B.提高访问某些网站的速度
C.避免来自internet上的病毒入侵      D.隐藏本地主机的IP地址

8.关于代理服务器的论述,正确的是()
A.使用internet 上己有的公开代理服务器,只需配置客户端。
B.代理服务器只能代理客户端http的请求。
C.设置好的代理服务器可以被网络上任何主机使用。
D.使用代理服务器的客户端没有自己的IP地址。

9.具有很多C语言的功能.又称过滤器的是()。
A.csh           B.tcsh
C.awk          D.sed

10.下面哪个命令是用来声明环境变量的?()
A.telnet           B.echo
C.export           D.print

11.下面Telnet命令的正确使用方式是?()
A.telnet 10.229.27.40 8001      B.telnet 8001 10.229.27.40
C.telnet 10.229.27.40:8001       D.telnet 8001:10.229.27.40

12.下列哪个语句在Python中是非法的?()
A.x = y = z = l                B.x=(y = z+1)
C.x, y = y, x              D.x += y

13.关于Python内存管理,下列说法错误的是()
A.变量不必事先声明          B.变量无须先创建和赋值而直接使用
C.变量无须指定类型          D.可以使用del释放资源

14.执行下列语句后的显示结果是什么?()

>>> world=”world”
»> print “hello”+ world 

A. Helloworld               B.“hello” world
C.hello world             D.语法错误

15.Python不支持的数据类型有()
A.char              B.int
C.float              D.list

16.以下不能创建一个字典的语句是()
A、dictl = {}
B、dict2 = { 3 : 5 }
C、dict3 = dict( [2 , 5] , [ 3,4 ])
D、dict4 = dict(( [1,2], [3,4]))

17.一个bash shell脚本的第一行是()
A.#/bin/csh        B.#/bin/bash
C./bin/bash        D.#!/bin/bash

二、简答(每题5分)

1.从日志/opt/bjca3/logs/ca_access.log中截取14点到16点的日志,将截取的日志导入到/tmp/ca_access.txt中,日志格式如下:

[Fri Mar 17 13:59:00 2017] [debug] mod_cmp.c(1600):[client 192.168.97.8] [CMP] CMP_set_status: starting …
[Fri Mar 17 13:59:00 2017] [debug] mod_cmp.c(938):[client 192.168.97.8] [CMP] CMP_cu_integer_set: starting …
[Fri Mar 17 13:59:00 2017] [debug] mod_cmp.c(957):[client 192.168.97.8] [CMP] CMP_cu_integer_set: ending ok …
………
[Fri Mar 17 16:36:00 2017] [debug] mod_cmp.c(1014):[client 192.168.97.8] [CMP] cu_octet_str_set: starting …
[Fri Mar 17 16:36:00 2017] [debug] mod_cmp.c(1037):[client 192.168.97.8] [CMP] cu_octet_str_set: ending ok …

答:awk '$4>"13:00:00"&&$4<="16:59:00"' txt

2.使用sed命令在文件file1中第一行和第三行后增加字符串“hello world”
答:sed '1s/$/hello world/;3s/$/hello world/' txt && sed ‘1a helloworld;3a helloworld’ txt

3.设计一个shell程序:
在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,所有者权限为:读写执行,所属组权限为:读、执行,其他人:只读

#!/bin/bash
for i in {1..50}
do
mkdir -p /userdata/user$i
chmod 754 /userdata/user$i
done

4.使用ping命令编写脚本来查询一组IP地址同时检测他们是否处于活跃状态。
要求(range:192.168.1.200-192.168.1.220,一个IP发送4个ping包,ping的过程不能输出到终端)

#!/bin/bash
for i in {200..220}
do
ping -c 4  -i 0.2  -W 1  192.168.1.$i &>/dev/null
if  [  $? –eq 0 ];then
        echo  "192.168.1.$i is up"
   else
        echo  "192.168.1.$i is down"
   fi
done

5.编写个shell脚本将/usr/local/test目录下大于100K的文件转移到/tmp目录下

#!/bin/bash
find /usr/local/test -size +50k  -exec cp {} /tmp/ \;

6.如何在脚本中获取脚本自身的名称?
答:$0

7.如何获取文件的最后一行?
答:tail -1 文件名

8.如何获取一个文件每一行的第三个元素?
答:awk '{print $3}' 文件名

9.举例如何写一个函数?

函数名(){
	函数内容
}

10.如何向连接两个字符串?

Shell脚本:X=${a}${b}
Python脚本:X=a+b

11.如何只用echo命令获取字符串变量的一部分?
答:echo {变量:开始位置:个数}

12.如何检査文件系统中是否存在某个文件?
答:[ -f 文件名 ]

13.Python里面如何随机生成1位数并用0补齐4位(000x) ?

#!/usr/bin/python
import string
x=0123456789
import random
x='000'+str(random.choice(string.digits))
print x

14.如何查看进程可打开的最大文件数量?

ulimit -Hn 100000
ulimit -Sn 100000
vim /etc/security/limits.conf

15.系统运行有些卡慢,想实时监控一下系统中各个进程的资源占用情况以及系统CPU、内存资源的使用情况可以使用哪个命令
答:top,uptime,free,ps aux

16.编写shell脚本,将文件系统使用率超过80%的目录输出

#!/bin/bash
df  |sed 's/%//' |awk '$5>=80'

17.创建以下目录结构,校验目录结构的命令(创建目录时用一条命令)
 /aa
  / \
/ba /bb
/\    \
/ca /cb /cc

答:mkdir –p /aa/{ba/{ca,cb},bb/cc}

18.某系统管理员需要每天做一定的重复工作,请按照要求写一个方案(crontab)

crontab -e
50  4     *  *  *   rm  -rf  /abc/*
00   8-18  *  * *   cat /aa.txt  > /bb.txt

19.写一个shell脚本,实现功能是:判断命令grep -q tttxxxttt doc.txt 是否找到所要的字符串,如找到则删除文件doc.txt

#!/bin/bash
grep -q tttxxxttt   doc.txt
[ $? -eq 0 ] &&  rm -rf doc.txt

20.subversion的主要功能是什么。它的常用命令有哪些?
答:
SVN是一个版本控制软件,主要功能为版本控制,支持日志、数据恢复等功能。
svn co,svn ci,svn log,svn update,svn diff,svn rm,svn merge等

21.写出编译RPM软件包的命令?
答:rpmbuild -ba xxx.spec

22.用sed修改test文件的2、3行hello为hi
答:sed '2,3s/hello/hi/' test

23.假设nginx的访问日志格式如下,统计访问页面前10位的IP数

202.101.129.218 - - [26/Mar/2017:23:59:55 +0800] “GET /online/stat_inst.php?
pid=d065HTTP/1.1” 302 20 -”-” “-” “Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.1)

答:awk '{IP[$1]++} END{for(i in IP){print i,IP[i]}}' nginx.log |sort -n |tail -10

24.如何使用awk查看TCP连接状态?

ss -ant |awk '{print $1}'
netstat -ant |awk '{print $6}'

25.Linux系统中,free命令查看内存信息,简述下buffer和cache的含义?
答:
(参考man free)
Buffers:Memory used by kernel buffers
Cache:Memory used by the page cache and slabs
都是缓存,buffers给内核使用,cache用来缓存文件数据

26.简述Redis和Mencached各有什么优缺点?
答:
Memcached不支持持久化存储,memcached数据类型少,优点:简单、速度快
Redis支持持久化存储,支持集群、主从,更多的数据类型,相对复杂

27.指定在2015年12月28日晚上20点30分将/home/stu目录里的文件备份并压缩为stu.tar.gz,并放到/home/temp目录里(当前/home/temp目录并不存在)

at 2015-12-28 20:30
mkdir /home/temp
tar–czf  /home/temp/stu.tar.gz  /home/stu

28.有个文件内容如下

		http://a.domain.com/l.html 
		http://b.domain.com/l.html 
		http://c.domain.com/l.html 
		http://a.domain.com/2.html 
		http://b.domain.com/2.html 
		http://a.domain.com/3.html

要求:得到主机名(和域名),并统计每个网址出现的次数,并排序。可以 shell 或 C
得到的结果应该是:

#!/bin/bash
awk-F"[/.]" '{print $3}' txt
awk -F"[/]" '{print $3}' txt |awk '{IP[$1]++} END {for(i in IP){print IP[i],i}}' |sort –n
输出结果:
1 c.domain.com
2 b.domain.com
3 a.domain.com

结束语

  今天的面试题内容就分享到这里,后续会陆续再出,答案如有不对欢迎指正。

Logo

一站式 AI 云服务平台

更多推荐