2024年Linux最全linux--shell学习一条龙服务_linux sheel服务(2),含答案解析

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

@ :同 @:同 @:同*,如果加了双引号,会把所有参数为独立的字符串分开

特殊状态变量

$?:上次命名执行状态,0正确,其他为失败

$$:当前shell的进程号

$!:上一次后台进程PID

$_:获取上一次执行的命令的最后一个参数

特殊shell扩展变量

${parameter:-word}     #如果parameter变量值为空,返回word字符串

${parameter:=word}     #如果parameter变量为空,则word替代变量值,且返回

${parameter:?word}      #如果parameter变为空,word当作错误输出,否则正常输出

${parameter:+word}     #如果变量为空,什么都不做,否则word返回

内置shell命令

echo命令

选项:

-n:不换行

-e:解析字符串中的特殊字符

\n换行

\回车

\t制表符

\b退格

printf命令

作用:打印与echo相同

与echo的区别:自动识别特殊字符,不自动添加换行符

eval命令

作用:执行多个命令

格式:eval 命令;命令;命令

exec命令

作用: 不创建子进程,执行后续命令;并执行完毕后,自动exit退出

Shel****字串的花括号用法

${变量名}:返回变量值

${#变量名}:返回变量长度,字符长度

截取:

${变量名:start}:返回变量start数值之后的字符,start是数字

${变量名:start:stop}:返回变量从start下标到stop的所有字符

删除:

${变量名#word}:从变量开头删除最短匹配的word字串

${变量名##word}:从变量开头删除最长匹配的word字串

${变量名%word}:从变量结尾删除最短的word字串

${变量名%%word}:从变量结尾删除最长匹配的word字串

替换:

${变量名/pattern/string}:用string代替第一个匹配的pattern字串

${变量名//pattern/string}:用string代替所有的pattern字串

内置命令,外置命令

内置命令:在系统启动时就载入内存,常驻内存,执行效率高,但是占用资源

外置命令:用户需要从硬盘中读取程序文件,再读入内存加载

Shell****运算符

**1.**算数运算符

逻辑概念:真为1  假为0

shell中常见的算数运算命令

(())          用于整数运算的常用运算符,效率高

let          用于整数运算,类似(())

expr        可用于整数运算,但是还有很多其他功能

bc          计算器程序(适合整数及小数运算)

$[ ]         用于整数运算

awk        awk既可以整数运算,和小数运算

declare   定义变量值和属性,-i参数可以用于定义整形变量做运算

特殊符号符号

++:自增

–:自减

**2.**关系运算符

运算符       说明

-eq    检测两个数是否相等

-ne    检测两个数是否不同

-gt    检测第一个数值是否大于右边数值

-lt      检测第一个数值是否小于右边数值

-ge    检测第一个数值是否大于等于右边的数值

-le     检测第一个数值是否小于等于第二个数值

**3.**逻辑运算符

运算符       说明

!              非运算,取反

-o             或运算,第一个表达式为true则返回true

-a              与(并且)运算,所有表达式都为true才返回true

**4.**字符串运算符

运算符               说明

=                       检测两个字符是否相等

!=                   检测两个字符是否不相等

-z                      检测字符串长度是否为0

-n                      检测字符串长度是否不等于0

str                     检测字符串是否为空

**5.**文件测试运算符

操作符               说明

-b file        检测文件是否是块文件

-c file         检测文件是否是字符设备文件

-d file        检测文件是否是目录

-f file                 检测文件是否是普通文件

-p file        检测文件是否是有名管道

-g file        检测文件是否设置了SGID位

-k file         检测文件是否设置了粘着位

-u file        检测文件是否设置了SUID位

-r file         检测文件是否可读

-w file                检测文件是否可写

-x file         检测文件是否可执行

-s file         检测文件是否为空

-e file         检测文件是否存在

接受键盘输入

read [选项] [变量名]

选项:

-a:后面跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。

-p:提示信息:在等待read输入时,输出提示信息

-t:秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间

-n:数字:read命令只接受指定的字符数,就会执行

-s:隐藏输入的数据,适合机密信息的输入

-d:后面跟一个标志符,其实只是其后的第一个字符有用,作为结束的标志

-e:在输入的时候可以使用命令补全功能

变量名:

变量名可以自定义,如果不指定变量名,会把输入保存默认变量REPLY

如果只提供了一个变量名,则整个输入行赋予给变量

如果提供了一个以上的变量,则输入行分为若干字,一个接一个的赋予各个变量,而命令行上的最后一个变量取得剩余的所有字

流程控制

单分支if语法:

if [ 条件判断式 ]

then

程序

fi

双分支if条件语句

if [ 条件判断式 ]

then

条件成立时,执行的程序

else

条件不成立,执行的另一个程序

fi

多分支if条件语句

if [ 条件判断式1 ]

then

当条件判断式1成立时,执行程序1

elif [ 条件判断式2 ]

then

当条件判断式2成立时,执行程序2

else

当所有条件都不成立,最后执行程序

fi

多分支case条件语句

case $变量名 in

“值1”)

如果变量的值等于值1,则执行程序1

;;

“值2”)

如果变量的值等于值2,则执行程序2

;;

*)

如果变量的值都不是以上的值,则执行此程序

;;

esac

循环语句

for****语法一:

for 变量 in 值1 值2 值3 (可以是一个文件等)

do

程序

done

**注:**这种语法中for循环的次数,取决于in后面值的个数(空格分割),有几个值就循环几次,并且每次循环都把值赋予变量。

for****语法二:

for ((初始值;循环控制条件;变量变化))

do

程序

done

注:语法二注意:

初始值:在循环开始时,需要给某个变量赋予初始值,如i=1

循环控制条件:用于指定变量循环次数,如i<=100,则只要i的值小于等于100,循环就会继续

变量变化:每次循环之后,变量该如何变化,如i=i+1。代表每次循环之后,变量i的值都加1

while****循环语法:

while [ 条件判断式 ]

do

程序

done

until****循环语法:

until [ 条件判断式 ]

do

程序

done

**注:**和whlie循环相反,until循环时只要条件判断式不成立则进行循环,并执行循环程序,一旦循环条件成立,则终止循环。

函数

语法:

function 函数名 () {

程序

}

特殊流程控制语句

exit****语句:

注:系统中使用exit命令,用于退出当前用户。可是在Shell脚本中,exit语句是用来退出当前脚本

exit [返回值]

返回值:这个脚本执行完之后的返回值就是我们自己定义的返回值。

break****语句:

注:当程序执行到break语句时,会结束整个当前循环。

continue****语句:

注:continue也是结束流程控制语句,如果在循环中,continue语句只会结束单次当前循环。

字符截取,替换和处理命令

正则表达式

元字符      描述

\               转义符,将特殊字符进行转义,忽略其特殊意义

^              匹配行首,在awk中^是匹配字符串的开始

             匹配行尾, a w k 中,               匹配行尾,awk中,              匹配行尾,awk中,则是匹配字符的结尾

.               匹配换行符之外的任意单个字符

[ ]             匹配包含在[ ^字符 ]之中的任意一个字符

[ ^ ]          匹配[ ^字符 ]之外的任意一个字符

[ - ]          匹配[ - ]中指定范围中的任意一个字符,要写成递归

?              匹配之前的项1次或者0次

| 匹配之前的项1次或者多次 | sa-6+匹配sa-6、sa-666,不能匹配sa-

| 匹配之前的项0次或者多次| co*l匹配cl、col、cool、coool等

() | 匹配表达式,创建一个用于匹配的子串 | ma(tri)?匹配max或maxtrix

{n} | 匹配之前的项n次,n是可以为0的正整数 |[0-9]{3}匹配任意一个三位数,可以扩展为[0-9][0-9][0-9]

{n,}| 之前的项至少需要匹配n次 | [0-9]{2,}匹配任意一个两位数或更多位数不支持{n,}{n,}{n,}

{n,m}| 指定之前的项至少匹配n次,最多匹配m次,n<=m | [0-9]{2,5}匹配从两位数到五位数之间的任意一个数字

|| 交替匹配|两边的任意一项 | ab(c|d)匹配abc或abd

字符截取替换命令

cut****列提取命令

语法:

-f 列号: 提取第几列

-d 分隔符: 按照指定分隔符分割列

-n 取消分割多字节字符

-c 字符范围: 不依赖分隔符来区分列,而是通过字符范围(行首为0)来进行字段提取。“n-”表示从第n个字符到行尾;“n-m”从第n个字符到第m个字符;“一m”表示从第1个字符到第m个字符。

–complement   补足被选择的字节、字符或字段

–out-delimiter  指定输出内容是的字段分割符

awk编程

awk****概述

注:awk是一种处理文本文件的语言,是一个强大的文本分析工具

printf****格式化输出语法:

printf ‘输出类型输出格式’ 输出内容

输出类型:

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

–complement   补足被选择的字节、字符或字段

–out-delimiter  指定输出内容是的字段分割符

awk编程

awk****概述

注:awk是一种处理文本文件的语言,是一个强大的文本分析工具

printf****格式化输出语法:

printf ‘输出类型输出格式’ 输出内容

输出类型:

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-3E1wLFZs-1715161490659)]
[外链图片转存中…(img-6rpTOVdo-1715161490659)]
[外链图片转存中…(img-loQX2R8l-1715161490659)]
[外链图片转存中…(img-uNVxH0r2-1715161490660)]
[外链图片转存中…(img-0mtFFU5j-1715161490660)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

  • 30
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值