热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

shell有哪些重要知识点?Linux运维面试题

Linux运维学习中shell有哪些重要知识点?Linux面试题分享第1章Shell1选择1.1改变bash的提示符实际上就是改变变量(ÿ

Linux运维学习中shell有哪些重要知识点?Linux面试题分享


第1章 Shell


1 选择


1.1 改变bash的提示符实际上就是改变变量()

$HOME $PWD $PS1 $PS2


1.2 在shell脚本中,用来读取文件内各个域的内容并将其赋值给shell变量的命令是______

fold join tr read


1.3 从后台启动进程,应在命令的结尾加上符号()

A:&
B:@
C:#
D:$


1.4 不是shell具有的功能和特点是()

A:管道
B:输入输出重定向
C:执行后台进程
D:处理程序命令


1.5 退出交互模式的shell,应键入()

A: B:^q C:exit D:quit


1.6 shell不仅仅是用户命令解释器,同时一种强大的编程语言,linux缺省的shell是

bash
ruby
PHP
perl


1.7 以下函数中,和其他函数不属于一类的是

Read pread write pwrite fseek lseek


1.8 下列变量名中有效的shell变量名是:______

-2-time _2$3 trust_no_1 2004file


1.9 下列对shell变量FRUTT操作,正确的是______

为变量赋值:$FRUTT=apple 显示变量的值:fruit=apple

显示变量的值:echo FRUTT判断变量是否有值:[−f−−FRUTT 判断变量是否有值:[ -f --FRUTT:[fFRUTT || ]


1.10在shell编程中关于$2的描述正确的是

程序后携带了两个位数参数 宏替换

程序后面携带的第二个位置参数 携带位置参数的个数


1.11在shell环境下想把‘gyyx’值赋给变量company,下面哪个是正确的:

company = gyyx
$company=gyyx
company=‘gyyx’
company=gyyx


1.12下面sed删除行,下面哪个脚本是错误的是

sed -e ‘/man/d’ filename
sed -e ‘1,3d’ filename
sed -e ‘1,/man/d’ filename
sed -e ‘/man/3d’ filename


1.13下面表述错误的是

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GGXD3AuC-1608104204296)(https://math.jianshu.com/math?formula=0%E8%A1%A8%E7%A4%BA%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%89%A7%E8%A1%8C%E5%90%8D%E5%AD%97)]n 表示程序的第n个参数值

$* 表示程序的所有参数个数 $$表示程序的PID


1.14下列代码样例中,哪个存在错误:

for filename in $(ls) do cat $filename done

for((i&#61;0;i<10;i&#43;&#43;)) do echo $i done

x&#61;1 sum&#61;0 while [ x−le10]doletsum&#61;sum&#43;x -le 10 ] do let sum&#61;sum&#43;xle10]doletsum&#61;sum&#43;x let x&#61;x&#43;1 done echo\ $sum

for $i in 1 2 3 4 5 do echo $i done


1.15在shell脚本中&#xff0c;用来读取文件内各个域的内容并将其赋值给shell变量的命令是&#xff1a;

Fold join tr read


1.16shell中如何跳出当前循环继续之后的循环

break continue exit kill


1.17shell脚本中的注释符

# // /**/ " "


1.18采用bash执行shell脚本时加上哪个参数可以跟踪执行脚本过程

-x -u -f -p


1.19以下命令执行后&#xff0c;结果为&#xff08;&#xff09;

Var1&#61;abcdedf

Var2&#61;abcded

Echo “var1”∣grep−q“var1” |grep -q “var1grepqvar2” && echo “yes” ||echo “no”

无结果 语法错误 yes no


1.20在shell比较运算符中&#xff0c;数值测试“等于则为真”的是&#xff08;&#xff09;

-ne -ge -eq -le


2 填空


2.1 在shell编程中&#xff0c;如果要访问变量值&#xff0c;可以变量前加一个——符号


2.2 请说出以下符号在bash shell中的意义

$0 $n $# $&#xff1f; $* $$ ${#aa}


2.3 编写shell程序之前必须赋予该脚本_____


2.4 Linux系统shell脚本第一行需写______代表什么意义_____


2.5 编写shell脚本时注释符是_________


2.6 shell命令“sed -i s/\r/ /g test.txt”实现的是_______


3 简答


3.1 在shell中&#xff0c;0,0,0,n,KaTeX parse error: Expected &#39;EOF&#39;, got &#39;#&#39; at position 1: #̲,*,&#64;,&#64;,&#64;,&#xff1f;分别是什么含义&#xff1f;


3.2 统计/var/log下文件的个数。


3.3 如何将F1文件的运行结果输出到F2.txt里&#xff1f;


3.4 写一个脚本实现判断192.168.1.0/24 网络里&#xff0c;当前在线的ip有哪些&#xff0c;能拼通则认为在哪


3.5 根据以下信息&#xff1a;

IP_Address MAC_Address Interface Static

10.66.10.250 80:71:7A:33:CA:A7 br on

10.66.10.249 5C:50:15:7F:3B:F5 br on

将以上文件名称test.txt文件中IP_Address,MAC_Address, Interface三项下的内容取出来&#xff0c;值以“&#xff1a;”分割&#xff0c;并呈格式显示出来。注&#xff1a;

10.66.10.250:80:71:7A:33:CA:A7:br

10.66.10.249:5C:50:15:7F:3B:F5:br


3.6 在shell中变量的赋值有四种方法&#xff0c;其中采用name&#61;jfedu.net的方法称&#xff1a;

直接复制 使用read命令 使用命令行传参 使用命令输出


3.7 编写一个脚本&#xff0c;5分钟检查一次日志&#xff0c;发现有暴力SSH破解现象的&#xff0c;提取此类IP地址&#xff0c;并去重&#xff0c;并按降序排序。

要求&#xff1a;同一个IP暴力破解超过10次&#xff0c;自动屏蔽IP地址&#xff0c;指定办公室IP地址&#xff08;192.168.100.100&#xff09;为可信任IP地址&#xff0c;不受屏蔽规则限制&#xff0c;以下为日志格式&#xff1a;

日志样式&#xff1a;

May 4 03:43:07 tz-monitor sshd{14003}: Failed password for root from 124.232.135.84 port 25251 ssh2

Myy 4 03:43:07 tz-monitor sshd{14082}: invalid user postgres from 124.232.135.84


3.8 检查OSPF route-ID配置&#xff0c;配置如下&#xff0c;请用shell编写代码&#xff0c;条件如下&#xff1a;a.检查ospf的route-id值&#xff0c;route-id值必须与interface LoopBack0的IP地址值相同&#xff0c;如果两个值不相等打印出ospf的route-id的值&#xff0c;并且ospf的route-id值必须以139开头&#xff0c;如139.xx.xx.xx&#xff0c;否则也打印出route-id的值

ofpf 100

route-id 139.11.0.1

area 0.0.0.0

network 139.11.0.1 0.0.0.0

network 140.11.0.0 0.0.0.3

network 140.11.0.8 0.0.0.3

network 140.11.0.16 0.0.0.3

network 140.11.0.24 0.0.0.3

network 140.11.0.32 0.0.0.3


interface LoopBack0

ip address 139.11.0.1 255.255.255.255



3.9 检查IP地址合规&#xff0c;请用shell编写代码&#xff0c;列出不以199或200开头的IP地址&#xff0c;如199.x.x.x 或200.x.x.x

Interface Physical Protocol IP Adderss

Eth1/0/1 up up 199.11.250.1

Eth1/0/2 up up 200.11.250.5

Loop0 up up(s) 199.11.250.1

Vlan1 *down down unassigned

Vlan500 down down 139.100.1.157

Vlan900 up up 140.11.250.41


3.11在单台服务器Linux操作系统环境下&#xff0c;写一行命令&#xff0c;将所有该机器的所有以“.log.bak“为后缀的文件&#xff0c;打包压缩并上传到ftp上&#xff0c;FTP地址为123.234.25.130的/home/bak文件夹


3.12Linux脚本&#xff1a;现在要删除本机中若干文件&#xff0c;/root/file.list中记录了这些文件的绝对路径&#xff0c;请用脚本实现。/root/file.list内容范例&#xff1a;/tmp/1.file


3.13说出shell的种类&#xff0c;已经常用的shell


3.14下面代码会输出什么&#xff1a;

def f(x,1&#61;[]);

for i in range(x);

1.append(i*i)

print 1

f(2)

f(3,[3,2,1])

f(3)


3.16创建一个函数&#xff0c;能接受两个参数&#xff1b;

&#xff08;1&#xff09; 第一个参数为URL&#xff0c;即可下载的文件&#xff1b;第二个参数为目录&#xff0c;即下载后保存位置&#xff1b;

&#xff08;2&#xff09; 如果用户给的目录不存在&#xff0c;则提示用户是否创建&#xff1b;如果创建就继续执行&#xff0c;否则函数返回一个51的错误值给调用脚本

&#xff08;3&#xff09; 如果给的目录存在&#xff0c;则下载文件&#xff1b;下载命令执行结束后测试文件下载成功&#xff0c;如果成功&#xff0c;则返回0给调用脚本&#xff0c;否则&#xff0c;返回52给调用脚本&#xff1b;


3.17有一个长度为n序列&#xff0c;需要移除掉里面的重复元素&#xff0c;但是对于每种元素保留最后出现的那个。输入描述:输入包括两行

第一行为序列长度n(1≤ n≤ 50)

第二行为n个数scqucencel,以空格分隔

输出描述

输出消除重复元素之后的序列&#xff0c;以空格分隔&#xff0c;行末无空格

输入例子

100 100 100 99 99 99 100 100 100

输出例子

99 100


3.18使用一个队列模拟一个栈&#xff0c;在空白处实现下面类中的方法即可。

class Queue(objec ):

defenqueue(self,item):

“’’”“入队”"""

defdequcue(self):

“”"“出队”""

测试

q &#61; Queue()

9 enqucue (1)

输出q [1]

q.enqueue(4)

输出q [1,4]

q.dequeue()

输出14


3.20一个文本文件info.txt每行都是以逗号分隔&#xff0c;其中第二列都是数字&#xff0c;请对该文件按照第二列从小到大排列。

aa&#xff0c;101

bb&#xff0c;302

cc&#xff0c;222

dd&#xff0c;44


3.21通过shell如何删除文档中的注释和空白行。


3.22根据要求写出linux命令

a&#xff0e;显示当前目录的内容

b&#xff0e;以详细格式显示test用户的家目录内容&#xff0c;包含隐藏文件

c&#xff0e;进入根目录

d&#xff0e;显示/etc/passwd文本文件的内容

e&#xff0e;显示/etc/passwd文件的后十行内容


3.23用netstat统计系统当前tcp连接的各种状态的连接数


3.24写一个脚本&#xff0c;实现判断10.10.10.0/24网络里&#xff0c;当前在线的ip有哪些。注&#xff1a;能ping通则认为在线。


3.25怎么把脚本添加到系统服务里&#xff0c;即使用service来调用。


3.26统计指定文件中每个单词出现的次数&#xff1b;如

cat /etc/fstab\# /etc/fstabUUID&#61;94e4e384-Oace-437f-bc96-057dd64f42ee / ext4 defaults.barrier&#61;0 1 1tmpfs /dev/shm tmpfs defults 0 0

3.27练习&#xff1a;写一个脚本

列出如下菜单给用户

disk) show disks info;

mem) show memory info;

cpu) show cpu info;

*) quit;

提示用户给出自己的选择&#xff0c;而后显示对应其选择的相应系统信息


3.28请写出一个shell脚本希望把结构表显示出来


3.29求出a.log中的waring 但是不包括waring的行


3.30说明以下shell 代码&#xff0c;所完成的功能

n&#61;1
while [ $n -lt 1000 ]; docd /root/perl_test/testdirtouch sn.txtn&#61;expr $n &#43; 1
done

3.31用最熟悉的脚本语言实现如下功能

如果在/home/pushmail目录下不存在leadtone目录&#xff0c;则创建该目录&#xff0c;并将/var/sync/bin目录下的所有文件拷贝到leadtone目承下&#xff0c;但是不能够拷贝文件长

度大于1M的文件。


3.32根据要求写出linux命令

a&#xff0e;显示当前目录的内容

b&#xff0e;以详细格式显示test用户的家目录内容&#xff0c;包含隐藏文件

c&#xff0e;进入根目录

d&#xff0e;显示/etc/passwd文本文件的内容

e&#xff0e;显示/etc/passwd文件的后十行内容


3.33查找含有特定字符的文件


3.34Centos操作系统历史命令记录中&#xff0c;执行次数最多的5条


3.35写一个脚本&#xff0c;判断一个指定的脚本是否是语法错误&#xff0c;如果有错误&#xff0c;则提醒用户键入Q或者q无视错误并退出其它任何键可以通过vim打开这个指定的脚本


3.36用Shell编程&#xff0c;判断一文件是不是字符设备文件&#xff0c;如果是将其拷贝到 /dev 目录下


3.37写一个脚本&#xff0c;实现批量添加20个用户&#xff0c;用户名为user01-20&#xff0c;密码user后面跟5个随机字符


3.38统计nginx访问日志&#xff0c;找出访问次数前10的IP


3.39找出在文件a中但不在文件b中的内容&#xff0c;用命令后编写脚本实现


3.40对文件test中&#xff0c;1>第一列为aaa的行求和&#xff1b;2>对偶数行求和&#xff1b;3>求文件test中的最大值


3.41Case语句的语法&#xff1f;while 语句的语法&#xff1f;continue命令的作用&#xff1f;


3.42请写出下列shell脚本&#xff1a;使用for循环在/opt目录下通过随机小写10个字母加固定字符串test批量创建10个html文件&#xff0c;创建完成后将test全部改为test_done&#xff08;for循环实现&#xff09;&#xff0c;并且html大写


3.44如何在每天23:59分时&#xff0c;将apache的accesslog中&#xff0c;访问次数最多的前10个ip以及访问量最多的10个文件保存到/var/Top.log中


3.45写一个脚本&#xff0c;判断一个指定的脚本是否是语法错误。如果有错误&#xff0c;则提醒用户键入Q或q无视错误并退出其它任何键可以指定的脚本


3.46shell脚本编程&#xff1a;求100以内的质数


3.47如果有10个文件夹&#xff0c;每个文件夹都有1,000,000个url&#xff0c;每个url对应一个访问量&#xff0c;请问如何最快找出前1,000,000个访问量最高的url


3.48创建一个shell脚本&#xff0c;它从用户那里接收10个数&#xff0c;并显示已输入的最大的数


3.49设计一个shell程序&#xff0c;在每月第一天备份并压缩/etc目录的所有内容&#xff0c;存放在/root/bak目录里&#xff0c;且文件名为如下形式yymmdd_etc&#xff0c;yy为年&#xff0c;mm为月&#xff0c;dd为日。shell陈旭fileback存放在/usr/bin目录下


3.50找出系统中父进程号为105的所有进程&#xff0c;并将其结束


3.51如何从history记录中分析最近500次内执行最多的命令&#xff1f;如何查找当前目录90天以前的文件并将其删除&#xff1f;


3.52写出命令统计当前连接到本机6379端口连接数最高的ip地址和连接个数&#xff0c;查看自己的ip地址&#xff0c;看这个ip地址所在网段都有哪些机器&#xff0c;任意查看此网段的另外一个ip地址有哪些端口开放了。简述tcp的几种连接状态&#xff0c;高并发服务器一般会遇到什么问题&#xff1f;


3.53下面给出了一个shell程序&#xff0c;试对其行后有#&#xff08;号码&#xff09;形式的语句进行解释&#xff0c;并说明程序完成的功能

#!/bin/bashDICNAME&#61;&#96;ls /root |grep bak&#96; #(1)if [ -z "$DICNAME" ] then #(2)mkdir /root/bak cd /root/bak #(3)fiYY&#61;&#96;date &#43;%y&#96; MM&#61;&#96;date &#43;%m&#96; DD&#61;&#96;date &#43;%d&#96; #(4)BACKETC&#61;$YY$MM$DD_etc.tar.gz #(5)tar zcvf $BACKETC /etc #(6)echo "fileback fiaished!"

3.54试编写一个Shell程序&#xff0c;该程序能接收用户从键盘输入的100个整数&#xff0c;然后求出其总和、最大值及最小值


3.55请用自己熟悉的脚本语言&#xff0c;快速替换notice服务下config.properties配置文件中所有变量值为jdbc.username,jdbc.password的值为blue和pass1234 说明&#xff1a;配置文件的目录/opt/blue/notice/conf/config.properties

config.properties文件格式如下&#xff1a;

zookeeper.server&#61;127.0.0.1:2181

jdbc.driver&#61;com.mysql.jdbc.Driver

jdbc.url&#61;jdbc:mysql://lx-db:3306/gudong

jdbc.username&#61;lanxin

jdbc.password&#61;OnLIDX5


3.56会哪些编程语言&#xff1f;写过哪种shell脚本&#xff1f;请现场编写一组


3.57判断数字大于500则执行big.sh 小于等于500则退出脚本&#xff0c;并输出报错信息


3.59文件ip.txt中包含很多IP地址&#xff08;以及其它非IP数据&#xff09;&#xff0c;请打印出满足A.B.C.D 其中A&#61;172 C&#61;130 D<&#61;100 条件的所有IP&#xff08;请用AWK实现&#xff09;


3.60请编写一个可递归创建3级hash目录的shell脚本&#xff0c;hash目录名分别为 a b c d e f 0 1 2 3 4 5 6 7 8 9 (请用bash实现)


3.61统计web服务器上网络连接的各个状态&#xff08;ESTABLISHED/SYN_SENT/SYN_RECV等&#xff09;的个数并按倒序排列


3.62脚本测试test.txt文件

1 2 3

4 5 6

7 8 9

打印出每一列的累加值


3.63请在linux下写个bash shell 程序&#xff0c;目的如下&#xff1a;查找/opt/mp3目录下所有mp3后缀的文件&#xff0c;然后计算下每个md5值&#xff0c;文件名跟md5值写入新的文件mp3-md5.txt文件


3.64请写出完成下面工作的Linux shell命令或脚本

&#xff08;1&#xff09;查看服务器的硬盘占用量

&#xff08;2&#xff09;将/usr/test目录下大于100K的文件转移到/tmp目录下

&#xff08;3&#xff09;杀死所有启动的servicefx_asr进程

&#xff08;4&#xff09;假设某nginx server的日志access.log如下&#xff1a;

198.24.230.194 - - [10/Oct/2015:10:23:50 &#43;0800] “POST /asr/recognize HTTP/1.1 200 177 “-” ”-”

请查找在2015/10/10,10点这一个小时内&#xff0c;访问“/CheckAuth”接口的IP一共有几个&#xff0c;每个各访问了多少次


3.65执行$ time sleep 2 输出如下

real 0m2.003s

user 0m0.004s

sys 0m0.000s

请说明real、user、sys三者具体代表的意思和区别


3.66编写脚本完成以下工作

某目录下有两个文件a.txt和b.txt&#xff0c;文件格式为(ip username)&#xff0c;例如&#xff1a;

a.txt b.txt

127.0.0.1zhangsan 127.0.0…4lixiaoliu

127.0.0.1wangxiaoer 127.0.0.01lisi

127.0.0.2lisi

127.0.0.3wangwu

每个文件至少有100万行&#xff0c;请使用Linux命令完成下列工作

1&#xff09;两个文件各自的IP数&#xff0c;以及总IP数

2&#xff09;出现再b.txt而没有出现再a.txt的IP

3&#xff09;每个username出现的次数&#xff0c;以及每个username对应的IP数


3.67现在一个REST API服务&#xff08;名称为ab-service&#xff09;&#xff0c;进程启动后占用8038端口进行网络通信。现需要一个Bash Shell脚本&#xff08;start.sh&#xff09;&#xff0c;在一台Linux机器上启动这个服务&#xff0c;并通过8038端口对所有内外网IP服务。请写出完整的可运行脚本&#xff0c;并尽量考虑可能出现的情况并处理


推荐阅读
  • 如何配置VisualSVN以确保提交时必须填写日志信息
    在软件开发团队中,成员们有时会忘记在提交代码时添加必要的备注信息。为了规范这一流程,可以通过配置VisualSVN来强制要求团队成员在提交文件时填写日志信息。本文将详细介绍如何设置这一功能。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 本文详细介绍了如何在PHP中记录和管理行为日志,包括ThinkPHP框架中的日志记录方法、日志的用途、实现原理以及相关配置。 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • Redis 脑裂现象及其应对策略
    本文探讨了 Redis 集群中的脑裂现象及其解决方案,包括脑裂的成因、影响以及如何通过配置项防止脑裂的发生。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 多线程基础概览
    本文探讨了多线程的起源及其在现代编程中的重要性。线程的引入是为了增强进程的稳定性,确保一个进程的崩溃不会影响其他进程。而进程的存在则是为了保障操作系统的稳定运行,防止单一应用程序的错误导致整个系统的崩溃。线程作为进程的逻辑单元,多个线程共享同一CPU,需要合理调度以避免资源竞争。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • Ansible:自动化运维工具详解
    Ansible 是一款新兴的自动化运维工具,基于 Python 开发,集成了多种运维工具(如 Puppet、CFEngine、Chef、Func 和 Fabric)的优点,实现了批量系统配置、程序部署和命令执行等功能。本文将详细介绍 Ansible 的架构、特性和优势。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
author-avatar
mobiledu2502921803
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有