导航:首页 > 操作系统 > linux内核面试

linux内核面试

发布时间:2022-09-03 04:47:35

❶ 中科创达 linux 面试怎么样

本文将带来11个Linux基础面试问题,希望对即将换工作或者正在找相关工作的朋友们一些帮助。

Q.1: Linux 操作系统的核心是什么?

Shell
Kernel
Command
Script
Terminal
答: 内核(Kernel)是Linux 操作系统的核心。Shell是一个命令行解释器,命令(Command)是针对计算机的指令,脚本(Script)是存储在文件中的命令的集合,终端(Termial)是命令行接口。

Q.2: Linus Torvalds 都创建过什么东东?

Fedora
Slackware
Debian
Gentoo
Linux
答: Linux Torvalds 创建了Linux,Linux是所有上述操作系统的核心,同样也是其他一些Linux 操作系统的核心。

Q.3: Torvalds,使用C++语言编写了Linux内核的大部分代码,是这样吗?

答: 不! Linux内核包含了12,020,528行代码,其中注释占去了2,151,595 行。因此剩下的9,868,933 行就是纯代码了。而其中7,896,318行都是用C语言写的。

剩下的1,972,615行则是使用C++,汇编,Perl, Shell Script, Python, Bash Script, HTML, awk, yacc, lex, sed等。

注:代码行数每天都在变动,平均每天超过3,509行代码添加到内核。

Q.4: 起初,Linux 是为 Intel X86 架构编写的,但是后来比其他操作系统移植的硬件平台都多,是这样吗 ?

答: 是的,我同意。Linux那时候是为x86机器写的,而且现已移至到所有类型的平台。今天超过90%的超级计算机都在使用Linux。Linux在移动手机和平板电脑领域前景广阔。事实上我们被Linux包围着,远程遥控,太空科学,研究,Web,桌面计算等等,举之不尽。

Q.5: 编辑 Linux 内核合法吗?

答: 是的,内核基于GPL发布,任何人都可以基于GPL允许的权限随意编辑内核。Linux内核属于免费开源软件(FOSS)。

Q.6: UNIX和Linux操作系统,本质上的不同在哪里?

答: Linux操作系统属于免费开源软件,内核是由 Linus Torvalds 和开源社区共同开发的。当然我们不能说UNIX操作系统和免费开源软件(FOSS)无关,BSD 就是基于 FOSS 范畴的 UNIX 的变种。而且大公司如 Apple,IBM,Oracle,HP等,都在为UNIX内核贡献代码。

Q. 7: 挑出来一个与众不同的来.

HP-UX
AIX
OSX
Slackware
Solaris
答 : Slackware。 HP-UX, AIX, OSX, Solaris 分别是由 HP, IBM, APPLE, Oracle 开发的,并且都是UNIX的变种. Slackware 则是一个Linux操作系统.

Q.8: Linux 不会感染病毒吗?

答 : 当然会! 这个地球上不存在不会感染病毒的操作系统。但是Linux以迄今为止病毒数量少而着称,是的,甚至比UNIX还要少。Linux榜上有名的病毒只有60-100个,而且没有一个病毒在传播蔓延。Unix粗略估计有85-120个。

Q.9: Linux 属于哪种类型的操作系统?

多用户
多任务
多线程
以上所有
以上都不是
答 : 以上所有。Linux是一个支持多用户,可以同时运行多个进程执行多个任务的操作系统。

Q.10: 一般的 Linux 命令的语法格式是:

command [选项] [参数]
command 选项 [参数]
command [选项] [参数]
command 选项 参数
答 : Linux 命令的正确语法是, Command [选项] [参数]。

Q.11: 挑出来一个与众不同的来。

Vi
vim
cd
nano
答 : cd 与其他命令不同。Vi,vim和 nano都是编辑器,用于编辑文档,而cd是用于切换目录的命令。

就这么多了。上述问题你学到手几个?效果如何?我们期待着你的评论。下周,会有新的问题,让我们拭目以待。保持健康,锁定链接,记得来Tecmint哦。

❷ 面试 linux 文件系统怎样io到底层

前言:本文主要讲解LinuxIO调度层的三种模式:cfp、deadline和noop,并给出各自的优化和适用场景建议。IO调度发生在Linux内核的IO调度层。这个层次是针对Linux的整体IO层次体系来说的。从read()或者write()系统调用的角度来说,Linux整体IO体系可以分为七层,它们分别是:VFS层:虚拟文件系统层。由于内核要跟多种文件系统打交道,而每一种文件系统所实现的数据结构和相关方法都可能不尽相同,所以,内核抽象了这一层,专门用来适配各种文件系统,并对外提供统一操作接口。文件系统层:不同的文件系统实现自己的操作过程,提供自己特有的特征,具体不多说了,大家愿意的话自己去看代码即可。页缓存层:负责真对page的缓存。通用块层:由于绝大多数情况的io操作是跟块设备打交道,所以Linux在此提供了一个类似vfs层的块设备操作抽象层。下层对接各种不同属性的块设备,对上提供统一的BlockIO请求标准。IO调度层:因为绝大多数的块设备都是类似磁盘这样的设备,所以有必要根据这类设备的特点以及应用的不同特点来设置一些不同的调度算法和队列。以便在不同的应用环境下有针对性的提高磁盘的读写效率,这里就是大名鼎鼎的Linux电梯所起作用的地方。针对机械硬盘的各种调度方法就是在这实现的。块设备驱动层:驱动层对外提供相对比较高级的设备操作接口,往往是C语言的,而下层对接设备本身的操作方法和规范。块设备层:这层就是具体的物理设备了,定义了各种真对设备操作方法和规范。有一个已经整理好的[LinuxIO结构图],非常经典,一图胜千言:我们今天要研究的内容主要在IO调度这一层。它要解决的核心问题是,如何提高块设备IO的整体性能?这一层也主要是针对机械硬盘结构而设计的。众所周知,机械硬盘的存储介质是磁盘,磁头在盘片上移动进行磁道寻址,行为类似播放一张唱片。这种结构的特点是,顺序访问时吞吐量较高,但是如果一旦对盘片有随机访问,那么大量的时间都会浪费在磁头的移动上,这时候就会导致每次IO的响应时间变长,极大的降低IO的响应速度。磁头在盘片上寻道的操作,类似电梯调度,实际上在最开始的时期,Linux把这个算法命名为Linux电梯算法,即:如果在寻道的过程中,能把顺序路过的相关磁道的数据请求都“顺便”处理掉,那么就可以在比较小影响响应速度的前提下,提高整体IO的吞吐量。这就是我们为什么要设计IO调度算法的原因。目前在内核中默认开启了三种算法/模式:noop,cfq和deadline。严格算应该是两种:因为第一种叫做noop,就是空操作调度算法,也就是没有任何调度操作,并不对io请求进行排序,仅仅做适当的io合并的一个fifo队列。目前内核中默认的调度算法应该是cfq,叫做完全公平队列调度。这个调度算法人如其名,它试图给所有进程提供一个完全公平的IO操作环境。注:请大家一定记住这个词语,cfq,完全公平队列调度,不然下文就没法看了。cfq为每个进程创建一个同步IO调度队列,并默认以时间片和请求数限定的方式分配IO资源,以此保证每个进程的IO资源占用是公平的,cfq还实现了针对进程级别的优先级调度,这个我们后面会详细解释。查看和修改IO调度算法的方法是:cfq是通用服务器比较好的IO调度算法选择,对桌面用户也是比较好的选择。但是对于很多IO压力较大的场景就并不是很适应,尤其是IO压力集中在某些进程上的场景。因为这种场景我们需要的满足某个或者某几个进程的IO响应速度,而不是让所有的进程公平的使用IO,比如数据库应用。deadline调度(最终期限调度)就是更适合上述场景的解决方案。deadline实现了四个队列:其中两个分别处理正常read和write,按扇区号排序,进行正常io的合并处理以提高吞吐量。因为IO请求可能会集中在某些磁盘位置,这样会导致新来的请求一直被合并,可能会有其他磁盘位置的io请求被饿死。另外两个处理超时read和write的队列,按请求创建时间排序,如果有超时的请求出现,就放进这两个队列,调度算法保证超时(达到最终期限时间)的队列中的请求会优先被处理,防止请求被饿死。不久前,内核还是默认标配四种算法,还有一种叫做as的算法(Anticipatoryscheler),预测调度算法。一个高大上的名字,搞得我一度认为Linux内核都会算命了。结果发现,无非是在基于deadline算法做io调度的之前等一小会时间,如果这段时间内有可以合并的io请求到来,就可以合并处理,提高deadline调度的在顺序读写情况下的数据吞吐量。其实这根本不是啥预测,我觉得不如叫撞大运调度算法,当然这种策略在某些特定场景差效果不错。但是在大多数场景下,这个调度不仅没有提高吞吐量,还降低了响应速度,所以内核干脆把它从默认配置里删除了。毕竟Linux的宗旨是实用,而我们也就不再这个调度算法上多费口舌了。1、cfq:完全公平队列调度cfq是内核默认选择的IO调度队列,它在桌面应用场景以及大多数常见应用场景下都是很好的选择。如何实现一个所谓的完全公平队列(CompletelyFairQueueing)?首先我们要理解所谓的公平是对谁的公平?从操作系统的角度来说,产生操作行为的主体都是进程,所以这里的公平是针对每个进程而言的,我们要试图让进程可以公平的占用IO资源。那么如何让进程公平的占用IO资源?我们需要先理解什么是IO资源。当我们衡量一个IO资源的时候,一般喜欢用的是两个单位,一个是数据读写的带宽,另一个是数据读写的IOPS。带宽就是以时间为单位的读写数据量,比如,100Mbyte/s。而IOPS是以时间为单位的读写次数。在不同的读写情境下,这两个单位的表现可能不一样,但是可以确定的是,两个单位的任何一个达到了性能上限,都会成为IO的瓶颈。从机械硬盘的结构考虑,如果读写是顺序读写,那么IO的表现是可以通过比较少的IOPS达到较大的带宽,因为可以合并很多IO,也可以通过预读等方式加速数据读取效率。当IO的表现是偏向于随机读写的时候,那么IOPS就会变得更大,IO的请求的合并可能性下降,当每次io请求数据越少的时候,带宽表现就会越低。从这里我们可以理解,针对进程的IO资源的主要表现形式有两个:进程在单位时间内提交的IO请求个数和进程占用IO的带宽。其实无论哪个,都是跟进程分配的IO处理时间长度紧密相关的。有时业务可以在较少IOPS的情况下占用较大带宽,另外一些则可能在较大IOPS的情况下占用较少带宽,所以对进程占用IO的时间进行调度才是相对最公平的。即,我不管你是IOPS高还是带宽占用高,到了时间咱就换下一个进程处理,你爱咋样咋样。所以,cfq就是试图给所有进程分配等同的块设备使用的时间片,进程在时间片内,可以将产生的IO请求提交给块设备进行处理,时间片结束,进程的请求将排进它自己的队列,等待下次调度的时候进行处理。这就是cfq的基本原理。当然,现实生活中不可能有真正的“公平”,常见的应用场景下,我们很肯能需要人为的对进程的IO占用进行人为指定优先级,这就像对进程的CPU占用设置优先级的概念一样。所以,除了针对时间片进行公平队列调度外,cfq还提供了优先级支持。每个进程都可以设置一个IO优先级,cfq会根据这个优先级的设置情况作为调度时的重要参考因素。优先级首先分成三大类:RT、BE、IDLE,它们分别是实时(RealTime)、最佳效果(BestTry)和闲置(Idle)三个类别,对每个类别的IO,cfq都使用不同的策略进行处理。另外,RT和BE类别中,分别又再划分了8个子优先级实现更细节的QOS需求,而IDLE只有一个子优先级。另外,我们都知道内核默认对存储的读写都是经过缓存(buffer/cache)的,在这种情况下,cfq是无法区分当前处理的请求是来自哪一个进程的。只有在进程使用同步方式(syncread或者syncwirte)或者直接IO(DirectIO)方式进行读写的时候,cfq才能区分出IO请求来自哪个进程。所以,除了针对每个进程实现的IO队列以外,还实现了一个公共的队列用来处理异步请求。当前内核已经实现了针对IO资源的cgroup资源隔离,所以在以上体系的基础上,cfq也实现了针对cgroup的调度支持。总的来说,cfq用了一系列的数据结构实现了以上所有复杂功能的支持,大家可以通过源代码看到其相关实现,文件在源代码目录下的block/cfq-iosched.c。1.1cfq设计原理在此,我们对整体数据结构做一个简要描述:首先,cfq通过一个叫做cfq_data的数据结构维护了整个调度器流程。在一个支持了cgroup功能的cfq中,全部进程被分成了若干个contralgroup进行管理。每个cgroup在cfq中都有一个cfq_group的结构进行描述,所有的cgroup都被作为一个调度对象放进一个红黑树中,并以vdisktime为key进行排序。vdisktime这个时间纪录的是当前cgroup所占用的io时间,每次对cgroup进行调度时,总是通过红黑树选择当前vdisktime时间最少的cgroup进行处理,以保证所有cgroups之间的IO资源占用“公平”。当然我们知道,cgroup是可以对blkio进行资源比例分配的,其作用原理就是,分配比例大的cgroup占用vdisktime时间增长较慢,分配比例小的vdisktime时间增长较快,快慢与分配比例成正比。这样就做到了不同的cgroup分配的IO比例不一样,并且在cfq的角度看来依然是“公平“的。选择好了需要处理的cgroup(cfq_group)之后,调度器需要决策选择下一步的service_tree。service_tree这个数据结构对应的都是一系列的红黑树,主要目的是用来实现请求优先级分类的,就是RT、BE、IDLE的分类。每一个cfq_group都维护了7个service_trees,其定义如下:其中service_tree_idle就是用来给IDLE类型的请求进行排队用的红黑树。而上面二维数组,首先第一个维度针对RT和BE分别各实现了一个数组,每一个数组中都维护了三个红黑树,分别对应三种不同子类型的请求,分别是:SYNC、SYNC_NOIDLE以及ASYNC。我们可以认为SYNC相当于SYNC_IDLE并与SYNC_NOIDLE对应。idling是cfq在设计上为了尽量合并连续的IO请求以达到提高吞吐量的目的而加入的机制,我们可以理解为是一种“空转”等待机制。空转是指,当一个队列处理一个请求结束后,会在发生调度之前空等一小会时间,如果下一个请求到来,则可以减少磁头寻址,继续处理顺序的IO请求。为了实现这个功能,cfq在service_tree这层数据结构这实现了SYNC队列,如果请求是同步顺序请求,就入队这个servicetree,如果请求是同步随机请求,则入队SYNC_NOIDLE队列,以判断下一个请求是否是顺序请求。所有的异步写操作请求将入队ASYNC的servicetree,并且针对这个队列没有空转等待机制。此外,cfq还对SSD这样的硬盘有特殊调整,当cfq发现存储设备是一个ssd硬盘这样的队列深度更大的设备时,所有针对单独队列的空转都将不生效,所有的IO请求都将入队SYNC_NOIDLE这个servicetree。每一个servicetree都对应了若干个cfq_queue队列,每个cfq_queue队列对应一个进程,这个我们后续再详细说明。cfq_group还维护了一个在cgroup内部所有进程公用的异步IO请求队列,其结构如下:异步请求也分成了RT、BE、IDLE这三类进行处理,每一类对应一个cfq_queue进行排队。BE和RT也实现了优先级的支持,每一个类型有IOPRIO_BE_NR这么多个优先级,这个值定义为8,数组下标为0-7。我们目前分析的内核代码版本为Linux4.4,可以看出,从cfq的角度来说,已经可以实现异步IO的cgroup支持了,我们需要定义一下这里所谓异步IO的含义,它仅仅表示从内存的buffer/cache中的数据同步到硬盘的IO请求,而不是aio(man7aio)或者linux的native异步io以及lio机制,实际上这些所谓的“异步”IO机制,在内核中都是同步实现的(本质上冯诺伊曼计算机没有真正的“异步”机制)。我们在上面已经说明过,由于进程正常情况下都是将数据先写入buffer/cache,所以这种异步IO都是统一由cfq_group中的async请求队列处理的。那么为什么在上面的service_tree中还要实现和一个ASYNC的类型呢?这当然是为了支持区分进程的异步IO并使之可以“完全公平”做准备喽。实际上在最新的cgroupv2的blkio体系中,内核已经支持了针对bufferIO的cgroup限速支持,而以上这些可能容易混淆的一堆类型,都是在新的体系下需要用到的类型标记。新体系的复杂度更高了,功能也更加强大,但是大家先不要着急,正式的cgroupv2体系,在Linux4.5发布的时候会正式跟大家见面。我们继续选择service_tree的过程,三种优先级类型的service_tree的选择就是根据类型的优先级来做选择的,RT优先级最高,BE其次,IDLE最低。就是说,RT里有,就会一直处理RT,RT没了再处理BE。每个service_tree对应一个元素为cfq_queue排队的红黑树,而每个cfq_queue就是内核为进程(线程)创建的请求队列。每一个cfq_queue都会维护一个rb_key的变量,这个变量实际上就是这个队列的IO服务时间(servicetime)。这里还是通过红黑树找到servicetime时间最短的那个cfq_queue进行服务,以保证“完全公平”。选择好了cfq_queue之后,就要开始处理这个队列里的IO请求了。这里的调度方式基本跟deadline类似。cfq_queue会对进入队列的每一个请求进行两次入队,一个放进fifo中,另一个放进按访问扇区顺序作为key的红黑树中。默认从红黑树中取请求进行处理,当请求的延时时间达到deadline时,就从红黑树中取等待时间最长的进行处理,以保证请求不被饿死。这就是整个cfq的调度流程,当然其中还有很多细枝末节没有交代,比如合并处理以及顺序处理等等。1.2cfq的参数调整理解整个调度流程有助于我们决策如何调整cfq的相关参数。所有cfq的可调参数都可以在/sys/class/block/sda/queue/iosched/目录下找到,当然,在你的系统上,请将sda替换为相应的磁盘名称。我们来看一下都有什么:这些参数部分是跟机械硬盘磁头寻道方式有关的,如果其说明你看不懂,请先补充相关知识:back_seek_max:磁头可以向后寻址的最大范围,默认值为16M。back_seek_penalty:向后寻址的惩罚系数。这个值是跟向前寻址进行比较的。以上两个是为了防止磁头寻道发生抖动而导致寻址过慢而设置的。基本思路是这样,一个io请求到来的时候,cfq会根据其寻址位置预估一下其磁头寻道成本。设置一个最大值back_seek_max,对于请求所访问的扇区号在磁头后方的请求,只要寻址范围没有超过这个值,cfq会像向前寻址的请求一样处理它。再设置一个评估成本的系数back_seek_penalty,相对于磁头向前寻址,向后寻址的距离为1/2(1/back_seek_penalty)时,cfq认为这两个请求寻址的代价是相同。这两个参数实际上是cfq判断请求合并处理的条件限制,凡事复合这个条件的请求,都会尽量在本次请求处理的时候一起合并处理。fifo_expire_async:设置异步请求的超时时间。同步请求和异步请求是区分不同队列处理的,cfq在调度的时候一般情况都会优先处理同步请求,之后再处理异步请求,除非异步请求符合上述合并处理的条件限制范围内。当本进程的队列被调度时,cfq会优先检查是否有异步请求超时,就是超过fifo_expire_async参数的限制。如果有,则优先发送一个超时的请求,其余请求仍然按照优先级以及扇区编号大小来处理。fifo_expire_sync:这个参数跟上面的类似,区别是用来设置同步请求的超时时间。slice_idle:参数设置了一个等待时间。这让cfq在切换cfq_queue或servicetree的时候等待一段时间,目的是提高机械硬盘的吞吐量。一般情况下,来自同一个cfq_queue或者servicetree的IO请求的寻址局部性更好,所以这样可以减少磁盘的寻址次数。这个值在机械硬盘上默认为非零。当然在固态硬盘或者硬RAID设备上设置这个值为非零会降低存储的效率,因为固态硬盘没有磁头寻址这个概念,所以在这样的设备上应该设置为0,关闭此功能。group_idle:这个参数也跟上一个参数类似,区别是当cfq要切换cfq_group的时候会等待一段时间。在cgroup的场景下,如果我们沿用slice_idle的方式,那么空转等待可能会在cgroup组内每个进程的cfq_queue切换时发生。这样会如果这个进程一直有请求要处理的话,那么直到这个cgroup的配额被耗尽,同组中的其它进程也可能无法被调度到。这样会导致同组中的其它进程饿死而产生IO性能瓶颈。在这种情况下,我们可以将slice_idle=0而group_idle=8。这样空转等待就是以cgroup为单位进行的,而不是以cfq_queue的进程为单位进行,以防止上述问题产生。low_latency:这个是用来开启或关闭cfq的低延时(lowlatency)模式的开关。当这个开关打开时,cfq将会根据target_latency的参数设置来对每一个进程的分片时间(slicetime)进行重新计算。这将有利于对吞吐量的公平(默认是对时间片分配的公平)。关闭这个参数(设置为0)将忽略target_latency的值。这将使系统中的进程完全按照时间片方式进行IO资源分配。这个开关默认是打开的。我们已经知道cfq设计上有“空转”(idling)这个概念,目的是为了可以让连续的读写操作尽可能多的合并处理,减少磁头的寻址操作以便增大吞吐量。如果有进程总是很快的进行顺序读写,那么它将因为cfq的空转等待命中率很高而导致其它需要处理IO的进程响应速度下降,如果另一个需要调度的进程不会发出大量顺序IO行为的话,系统中不同进程IO吞吐量的表现就会很不均衡。就比如,系统内存的cache中有很多脏页要写回时,桌面又要打开一个浏览器进行操作,这时脏页写回的后台行为就很可能会大量命中空转时间,而导致浏览器的小量IO一直等待,让用户感觉浏览器运行响应速度变慢。这个low_latency主要是对这种情况进行优化的选项,当其打开时,系统会根据target_latency的配置对因为命中空转而大量占用IO吞吐量的进程进行限制,以达到不同进程IO占用的吞吐量的相对均衡。这个开关比较合适在类似桌面应用的场景下打开。target_latency:当low_latency的值为开启状态时,cfq将根据这个值重新计算每个进程分配的IO时间片长度。quantum:这个参数用来设置每次从cfq_queue中处理多少个IO请求。在一个队列处理事件周期中,超过这个数字的IO请求将不会被处理。这个参数只对同步的请求有效。slice_sync:当一个cfq_queue队列被调度处理时,它可以被分配的处理总时间是通过这个值来作为一个计算参数指定的。公式为:time_slice=slice_sync+(slice_sync/5*(4-prio))。这个参数对同步请求有效。slice_async:这个值跟上一个类似,区别是对异步请求有效。slice_async_rq:这个参数用来限制在一个slice的时间范围内,一个队列最多可以处理的异步请求个数。请求被处理的最大个数还跟相关进程被设置的io优先级有关。1.3cfq的IOPS模式我们已经知道,默认情况下cfq是以时间片方式支持的带优先级的调度来保证IO资源占用的公平。高优先级的进程将得到的时间片长度,而低优先级的进程时间片相对较小。当我们的存储是一个高速并且支持NCQ(原生指令队列)的设备的时候,我们最好可以让其可以从多个cfq队列中处理多路的请求,以便提升NCQ的利用率。此时使用时间片的分配方式分配资源就显得不合时宜了,因为基于时间片的分配,同一时刻最多能处理的请求队列只有一个。这时,我们需要切换cfq的模式为IOPS模式。切换方式很简单,就是将slice_idle=0即可。内核会自动检测你的存储设备是否支持NCQ,如果支持的话cfq会自动切换为IOPS模式。另外,在默认的基于优先级的时间片方式下,我们可以使用ionice命令来调整进程的IO优先级。进程默认分配的IO优先级是根据进程的nice值计算而来的,计算方法可以在manionice中看到,这里不再废话。2、deadline:最终期限调度deadline调度算法相对cfq要简单很多。其设计目标是:在保证请求按照设备扇区的顺序进行访问的同时,兼顾其它请求不被饿死,要在一个最终期限前被调度到。我们知道磁头对磁盘的寻道是可以进行顺序访问和随机访问的,因为寻道延时时间的关系,顺序访问时IO的吞吐量更大,随机访问的吞吐量小。如果我们想为一个机械硬盘进行吞吐量优化的话,那么就可以让调度器按照尽量复合顺序访问的IO请求进行排序,之后请求以这样的顺序发送给硬盘,就可以使IO的吞吐量更大。但是这样做也有另一个问题,就是如果此时出现了一个请求,它要访问的磁道离目前磁头所在磁道很远,应用的请求又大量集中在目前磁道附近。导致大量请求一直会被合并和插队处理,而那个要访问比较远磁道的请求将因为一直不能被调度而饿死。deadline就是这样一种调度器,能在保证IO最大吞吐量的情况下,尽量使远端请求在一个期限内被调度而不被饿死的调度器。

❸ 关于linux面试

哎哟 根据我被面试了N次的经验.基本上都是.
1.你先做个自我介绍吧.
2.知道是应届生或是历届生 问是否有工作经验
以前在什么单位工作过,或有什么工作或实习经历.
中间担任什么职位,负责的是什么.
3.然后问你对这个职位是怎么理解的,再问一些技术方面的问题.或者出个问题让他(她)实际操作一边.
4.问 对我们公司了解多少.
5.然后向他(她)介绍我们公司的一些基本情况
6.然后问他(她)待遇什么有要求.
7.再告诉他(她)我们的待遇分配.
8.最主要的一个问题:你觉得你的优势在哪.基本上所有面试官都会问.
这个问题在他介绍完自己之后问.
大致就这样啦.结束之后让他回去等通知.

PS:技术方面么,LINUX 企业接触最多的是 服务器(web.ftp.mail.dns.nis等等) 数据库咯, 问他(她)这些方面了解多少 掌握的多少.

❹ 关于linux的面试通知,请教各位

现在Linux内核中很大一部分是驱动,如果全部编译进内核,或者编译成模块,那么整个系统是特别庞大的,这有可能影响到某些方面的性能如速度,吞吐量等,那么就要对内核进行裁剪,把不需要的东西去掉。内核驱动中有专门用于LVM,RAID等的驱动,编译内核的时候可以看到相关选项。
关于做哪些准备我也不大清楚,毕竟不做这一块,给的建议是:
命令行肯定要熟悉,编译内核步骤,怎么使用你自己编译的Linux内核,怎么使用Linux备份数据,RAID级别,怎么写测试脚本等等。

❺ linux运维面试常见问题

linux运维面试常见问题

这里给大家整理了一些Linux系统运维相关的面试题,有些问题没有标准答案,如下是我给大家整理的linux运维面试常见问题,希望对大家有所作用。

一、Linux操作系统知识

1.常见的Linux发行版本都有什么?你最擅长哪一个?它的官网网站是什么?说明你擅长哪一块?

2.Linux开机启动流程详细步骤是什么?系统安装完,忘记密码如何破解?

3.企业中Linux服务器系统分区标准是什么?(以硬盘为300G,内存16G为例)

4.某一天突然发现Linux系统文件只读,该怎么办呢?完整操作步骤。

5.安装一台系统使用DVD光盘安装,如何安装50台Linux系统如何安装呢?思考一下。

6.用虚拟机安装了一台Linux系统,突然想克隆一台服务器,克隆后发现无法上网,如何解决?

7.Linux网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?

8.一般可以使用什么软件远程linux服务器?通过什么上传文件和下载文件?

9./mnt目录主要用于什么?/root目录跟root用户有什么关系?/根目录与/boot目录有什么联系?

10.某一天误操作,执行了rm -rf * ,会有哪些情况发生?请举例。

二、Linux命令及文件操作

1.在/tmp/目录下创建test.txt文件,内容为: Hello,World! ,用一个命令写出来。

2.给test.txt文件除所有者之外增加执行权限,最终以数字写出文件的权限。

3.用vi命令编辑test.txt,如何跳转到末行,首行,行首、行末,如何在光标行下一行插入,如何复制5行,删除10行,查找jingfeng的字符、把jingfeng替换为jfe.net

4.查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录下。

5.当前test.txt所属的用户为root,组为abc,请将test.txt使拥有者为abc,组为root,写出命令。

6.如何修改Linux启动级别为字符模式并永久生效,如何临时、永久关闭selinux及防火墙,请分别写出操作方法。

7.每次开机在/tmp目录下创建一个当天的日期文件夹(提示:当前日期表示的方法为:`date +%Y%m%d`)

8.如何查看文件内容,命令有哪些?查看文件第1行到3行,查看文件最后一行。

9.查看linux服务器IP的命令,同时只显示包含ip所在的行打印出来。

10.将普通用户test加入root组的命令是?

三、Linux磁盘及软件管理操作

1.如何添加一块新的50G硬盘到linux服务器系统作为单独的分区,并正在使用?需要哪些操作步骤?

2.有个金士顿U盘,需要往服务器/var/www/html/目录下上传一个index.html文件,如何操作并完成。

3.有一块移动硬盘,上面有300G数据,如何快速cp到linux服务器?

4.光盘里面有一个httpd-2.2.15.xx.rpm包,如何挂载并安装呢?

5.使用rpm命令安装、卸载、删除、更新ntp-0.7.12.x86_64.rpm这个软包。

6./var/www/html/是网站的发布目录,如何每天凌晨0点30对其进行自动备份,写出操作步骤?

7.使用tar命令打包并压缩/root目录,然后移动到/tmp下,将其权限设置其他人只读。

8.Yum命令与rpm命令的区别?如何使用rpm安装一个有依赖的包?

9.在这个月内,每天的早上 6 点到 12 点中,每隔 2 小时创建一个test.txt文件,内容为ok,如何实现?

10.将/usr/local/test目录下大于100K 的文件转移到/tmp 目录下。

11.简述 raid0 raid1 raid5三种工作模式的工作原理及特点。

12.如何查看占用端口 8080 的进程。

四、Linux服务配置及管理

1.请写出 apache2.X 版本的两种工作模式,以及各自工作原理。如何查看apache 当前所支持的'模块,并且查看是工作在哪种模式下?

2.Linux下nfs在客户端无法挂载,请写出排查步骤?

3.Linux下已经部署了dhcp服务器,客户端无法获取的IP,如何解决?

4.常见的FTP软件有哪些?Linux最常用的是?如何共享一个资源让他人使用用户名和密码访问?

5.如何禁止FTP使用匿名用户登录?命令行如何访问ftp服务器?

6.ApacheWEB服务器的发布目录在哪里?

7.ApacheWEB服务器有几种工作模式,每种模式的简单区别?

8.MySQL服务器的用途是?Apache和mysql可以安装在一台机器吗?如何查看apache和mysql端口和进程?

9.如何在虚拟机上面部署4个网站,访问的域名分别为www.a1.com test.a1.com www.a2.com test.a2.com?

10.假设 Apache 产生的日志文件名为access_log,在 apache 正在运行时,执行命令 mv access_log access_log.bak,执行完后,请问新的 apache的日志会打印到哪里,为什么?

11.我们都知道 FTP 协议有两种工作模式,说说它们的大概的一个工作流程?

12.Linux内核引导时,从哪个文件中读取要加载的文件系统。

13.写出下面服务的常用端口ftp http dns snmp pop3、dhcp、nfs、mysql、samba等服务。

14.Mysql创建数据库的命令,创建表的命令,插入语句的命令?

15.Mysql备份命令?Mysql如何给root用户对jfe授权访问,密码为jfe.net,请写出命令?

16.Mysql忘记密码该如何操作呢?

17.Linux运维工程师都需要具备哪些技能和职业品质?

;

❻ Linux运维工程师会面试哪些

知识上面的答主说的很精准了,我来说说技巧。我本身是一名HR,负责新盟教育的Linux讲师招聘,所以我需要懂Linux基础知识,方便对面试者提问。
首先,我会就应聘者简历上填写的内容进行,提问,一般会包括拿到的证书,有无经验,熟悉的技能,然后我的同事会提问专业内容。比如你写了擅长MySQL ,Jquery,bootstrap,那么我们就会提问这些内容,当然都不会特别困难,只需要证明你确实知道,不是在吹嘘就行。
其次我们会就岗位需求进行提问,我会问到加班,出差,经验等问题,我的同事会问会不会某些特定要求的内容,比如zabbix、nagios、elk等……
如果不会,请千万不要吹牛,我们会问到说明我们肯定知道这玩意,如果吹牛肯定一眼就看出来,然后三两句话把你送走这样。
如果你一面过了,要准备二面,那么请你至少,在二面之前,把我们提到的岗位要求的内容了解一下,避免我们再次提到的时候还是不知道,这样很影响面试结果。

❼ linux的支持文件系统有哪些 面试

1、Linux操作系统安装过程中的文件系统的选择;
1)ext2 文件系统; ext2文件系统应该说是Linux正宗的文件系统,早期的Linux都是用ext2,但随着技术的发展,大多Linux的发行版本目前并不用这个文件系统了;比如Redhat和Fedora大多都建议用ext3 ,ext3文件系统是由ext2发展而来的。对于Linux新手,我们还是建议您不要用ext2文件系统;ext2支持undelete(反删除),如果您误删除文件,有时是可以恢复的,但操作上比较麻烦; ext2支持大文件; ext2文件系统的官方主页是: http://e2fsprogs.sourceforge.net/ext2.html 2)ext3 文件系统:是由ext2文件系统发展而来; ext3 is a Journalizing file system for Linux(ext3是一个用于Linux的日志文件系统),ext3支持大文件;但不支持反删除(undelete)操作; Redhat和Fedora都力挺ext3;至于ext3文件系统的更多特性,请访问《Linux文件系统(filesystem)资源索引》 ;

3)reiserfs 文件系统; reiserfs文件系统是一款优秀的文件系统,支持大文件,支持反删除(undelete);在我的测试ext2、reiserfs反删除文件功能的过程中,我发现reiserfs文件系统表现的最为优秀,几乎能恢复90%以上的数据,有时能恢复到100%;操作反删除比较容易;reiserfs支持大文件;

4)、Linux 支持的文件系统; Linux目前几乎支持所有的Unix类的文件系统,除了我们在安装Linux操作系统时所要选择的ext3、reiserfs和ext2外,还支持苹果MACOS的HFS,也支持其它Unix操作系统的文件系统,比如XFS、JFS、Minix fs及UFS等,您可以在kernel的源码中查看;如果您想要让系统支持哪些的文件系统得需要把该文件系统编译成模块或置入内核; 当然Linux也支持Windows文件系统NTFST和fat,但不支持NTFS文件系统的写入;支持fat文件系统的读写 Linux也支持网络文件系统,比如NFS等;

❽ Linux运维工程师面试题库及答案

Linux运维工程师面试题库及答案

为帮助大家顺利通过Linux面试,我为大家分享的是Linux面试各部分知识题库,希望对大家复习有所帮助!

Linux操作系统知识

1.常见的Linux发行版本都有什么?你最擅长哪一个?它的网站网站是什么?说明你擅长哪一块?

2.Linux开机启动流程详细步骤是什么?系统安装完,忘记密码如何破解?

3.企业中Linux服务器系统分区标准是什么?(硬盘为300G,内存16G)

4.某一天突然发现Linux系统文件只读,该怎么办呢?完整操作步骤。

5.安装一台系统使用DVD光盘安装,如何安装50台Linux系统如何安装呢?思考一下。

6.用虚拟机安装了一台Linux系统,突然想克隆一台服务器,克隆后发现无法上网,如何解决?

7.Linux网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?

8.一般可以使用什么软件远程linux服务器?通过什么上传文件和下载文件?

9./mnt目录主要用于什么?/root目录跟root用户有什么关系?/根目录与/boot目录有什么联系?

10.某一天误操作,执行了rm -rf * ,会有哪些情况发生?请举例。

Linux命令及文件操作

1.在/tmp/目录下创建test.txt文件,内容为: Hello,World! ,用一个命令写出来。

2.给test.txt文件除所有者之外增加执行权限,最终以数字写出文件的权限。

3.用vi命令编辑test.txt,如何跳转到末行,首行,行首、行末,如何在光标行下一行插入,如何复制5行,删除10行,查找jingfeng的字符、把jingfeng替换为jfe.net

4.查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录下。

5.当前test.txt所属的用户为root,组为abc,请将test.txt使拥有者为abc,组为root,写出命令。

6.如何修改Linux启动级别为字符模式并永久生效,如何临时、永久关闭selinux及防火墙,请分别写出操作方法。

7.每次开机在/tmp目录下创建一个当天的日期文件夹(提示:当前日期表示的方法为:`date +%Y%m%d`)

8.如何查看文件内容,命令有哪些?查看文件第1行到3行,查看文件最后一行。

9.查看linux服务器IP的命令,同时只显示包含ip所在的行打印出来。

10.将普通用户test加入root组的命令是?

Linux磁盘及软件管理操作

1.如何添加一块新的50G硬盘到linux服务器系统作为单独的'分区,并正在使用?需要哪些操作步骤?

2.有个金士顿U盘,需要往服务器/var/www/html/目录下上传一个index.html文件,如何操作并完成。

3.有一块移动硬盘,上面有300G数据,如何快速cp到linux服务器?

4.光盘里面有一个httpd-2.2.15.xx.rpm包,如何挂载并安装呢?

5.使用rpm命令安装、卸载、删除、更新ntp-0.7.12.x86_64.rpm这个软包。

6./var/www/html/是网站的发布目录,如何每天凌晨0点30对其进行自动备份,写出操作步骤?

7.使用tar命令打包并压缩/root目录,然后移动到/tmp下,将其权限设置其他人只读。

8.Yum命令与rpm命令的区别?如何使用rpm安装一个有依赖的包?

9.在这个月内,每天的早上 6 点到 12 点中,每隔 2 小时创建一个test.txt文件,内容为ok,如何实现?

10.将/usr/local/test目录下大于100K 的文件转移到/tmp 目录下。

11.简述 raid0 raid1 raid5三种工作模式的工作原理及特点。

12.如何查看占用端口 8080 的进程。

Linux服务配置及管理

1.请写出 apache2.X 版本的两种工作模式,以及各自工作原理。如何查看apache 当前所支持的模块,并且查看是工作在哪种模式下?

2.Linux下nfs在客户端无法挂载,请写出排查步骤?

3.Linux下已经部署了dhcp服务器,客户端无法获取的IP,如何解决?

4.常见的FTP软件有哪些?Linux最常用的是?如何共享一个资源让他人使用用户名和密码访问?

5.如何禁止FTP使用匿名用户登录?命令行如何访问ftp服务器?

6.ApacheWEB服务器的发布目录在哪里?

7.ApacheWEB服务器有几种工作模式,每种模式的简单区别?

8.MySQL服务器的用途是?Apache和mysql可以安装在一台机器吗?如何查看apache和mysql端口和进程?

9.如何在虚拟机上面部署4个网站,访问的域名分别为www.a1.com test.a1.com www.a2.com test.a2.com?

10.假设 Apache 产生的日志文件名为access_log,在 apache 正在运行时,执行命令 mv access_log access_log.bak,执行完后,请问新的 apache的日志会打印到哪里,为什么?

11.我们都知道 FTP 协议有两种工作模式,说说它们的大概的一个工作流程?

12.Linux内核引导时,从哪个文件中读取要加载的文件系统。

13.写出下面服务的常用端口ftp http dns snmp pop3、dhcp、nfs、mysql、samba等服务。

14.Mysql创建数据库的命令,创建表的命令,插入语句的命令?

15.Mysql备份命令?Mysql如何给root用户对jfe授权访问,密码为jfe.net,请写出命令?

16.Mysql忘记密码该如何操作呢?

17.Linux运维工程师都需要具备哪些技能和职业品质?

;

❾ 运维必须掌握的Linux面试题

1、解释下什么是GPL,GNU,自由软件?
GPL:(通用公共许可证):一种授权,任何人有权取得、修改、重新发布自由软件的权力。
GNU:(革奴计划):目标是创建一套完全自由、开放的的操作系统。
自由软件:是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。主要许可证有GPL和BSD许可证两种。
2、linux系统里,buffer和cache如何区分?

buffer和cache都是内存中的一块区域,
当CPU需要写数据到磁盘时,由于磁盘速度比较慢,所以CPU先把数据存进buffer,
然后CPU去执行其他任务,buffer中的数据会定期写入磁盘;

当CPU需要从磁盘读入数据时,由于磁盘速度比较慢,
可以把即将用到的数据提前存入cache,CPU直接从Cache中拿数据要快的多。
3、描述Linux运行级别0-6的各自含义

0:关机模式
1:单用户模式<==破解root密码
2:无网络支持的多用户模式
3:有网络支持的多用户模式(文本模式,工作中最常用的模式)
4:保留,未使用
5:有网络支持的X-windows支持多用户模式(桌面)
6: 重新引导系统,即重启
4、描述Linux系统从开机到登陆界面的启动过程

⑴开机BIOS自检,加载硬盘。
⑵读取MBR,MBR引导。
⑶grub引导菜单(Boot Loader)。
⑷加载内核kernel。
⑸启动init进程,依据inittab文件设定运行级别
⑹init进程,执行rc.sysinit文件。
⑺启动内核模块,执行不同级别的脚本程序。
⑻执行/etc/rc.d/rc.local
⑼启动mingetty,进入系统登陆界面。
5、描述Linux下软链接和硬链接的区别

在Linux系统中,链接分为两种,一种是硬链接(Hard link),另一种称为符号链接或软链接(Symbolic Link)。
①默认不带参数的情况下,ln创建的是硬链接,带-s参数的ln命令创建的是软链接。
②硬链接文件与源文件的inode节点号相同,而软链接文件的inode节点号,与源文件不同,
③ln命令不能对目录创建硬链接,但可以创建软链接。对目录的软链接会经常使用到。
④删除软链接文件,对源文件和硬链接文件无任何影响。
⑤删除文件的硬链接文件,对源文件及软链接文件无任何影响。
⑥删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状)。
⑦同时删除源文件及其硬链接文件,整个文件才会被真正的删除。
⑧很多硬件设备的快照功能,使用的就是类似硬链接的原理。
⑨软链接可以跨文件系统,硬链接不可以跨文件系统。
6、shell脚本中“$?”标记的用途是什么?

在写一个shell脚本时,如果你想要检查前一命令是否执行成功,在if条件中使用“ ?
0

如果结束状态是0,说明前一个命令执行成功。
root@localhost:~# ls /usr/bin/share
ls: cannot access /usr/bin/share: No such file or directory

root@localhost:~# echo $?
2
如果结束状态不是0,说明命令执行失败。
7、如何让history命令显示具体时间?

$ HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"

$ export HISTTIMEFORMAT

重新开机后会还原,可以写/etc/profile
8、用shell统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前10位的IP数。以下是nginx的访问日志节选
202.101.129.218- - [26/Mar/2006: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)"

1}' access.log |sort|uniq -c |head -n 10

31 202.101.129.218
21 123.93.29.11
11 13.92.19.31
9、将本地的80端口的请求转发到8080端口,本机地址10.0.0.254,写出命令
$ iptables -t nat -A PREROUTING -d 10.0.0.254 -p tcp --dprot 80 -j DNAT --to-destination 10.0.0.254:8080
10、Load过高的可能性有哪些?
排查思路:

其他经验:
cpu load的飙升,一方面可能和full gc的次数增大有关,一方面可能和死循环有关
11、描述/etc/fstab 文件中每个字段的含义?
(1)第一列:将被加载的文件系统名;
(2)第二列:该文件系统的安装点;
(3)第三列:文件系统的类型;
(4)第四列:设置参数;
(5)第五列:供备份程序确定上次备份距现在的天数;
(6)第六列:在系统引导时检测文件系统的顺序。
12、 如何在打包时排除指定目录?
$ tar --exclude=/home/dmtsai --exclude= .tar -zcvf myfile.tar.gz /home/ /etc

mysql> update user set password=password(�') where user='root'

❿ Linux系统工程师面试题附答案(2)

Linux系统工程师面试题(附答案)

prefork的特点是:(预派生)

1.这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销

2.可以防止意外的内存泄漏

3.在服务器负载下降的时候会自动减少子进程数

worker的特点是:支持混合的多线程多进程的多路处理模块

如果对于一个高流量的HTTP服务 器,worker MPM是一个比较好的选择,因为worker MPM占用的内存要比prefork要小。

15.名词解释 HDLC,VTP,OSPF,RIP,DDOS,system V,GNU,netscreen,ssh,smartd,apache,WAIT_TIME 等等。

16.编写shell脚本获取本机的网络地址。比如:本机的ip地址是:192.168.100.2/255.255.255.0,那么它的网络地址是

192.168.100.1/255.255.255.0

方法一:

#!/bin/bash

#This script print ip and network

file=”/etc/sysconfig/network-scripts/ifcfg-eth0″

if [ -f $file ] ;then

IP=`grep “IPADDR” $file|awk -F”=” ‘{ print $2 }’`

MASK=`grep “NETMASK” $file|awk -F”=” ‘{ print $2 }’`

echo “$IP/$MASK”

exit 1

fi

方法二:

#!/bin/bash

#This programm will printf ip/network

#

IP=`ifconfig eth0 |grep ‘inet ‘ |sed ‘s/^.*addr://g’|sed ‘s/ Bcast.*$//g’`

NETMASK=`ifconfig eth0 |grep ‘inet ‘|sed ‘s/^.*Mask://g’`

echo “$IP/$NETMASK”

exit

17.在命令行下发一邮件,发件人:[email protected], 收信人:[email protected]

二、简述题:

1.linux下如何改IP,主机名,DNS

2.linux下如何添加路由

3.简述linux下编译内核的意义与步骤

4.简述Linux启动过程

5.简述DDOS攻击的原理

6.简述Tcp三次握手的过程

7.简述VPN,常见有哪几种?

三、设计题:

1.系统设计

请考虑以下系统的设计. 您可以翻阅资料,查询任何您有帮助的资料、指南等。

您有的资源:

8台安装Linux (2.6内核) 的双网卡PC服务器以及相关开源软件,交换机

Apache 2.2.x

Tomcat 5.5.X

数据库系统

最多8个Internet IP地址,请您设计一个系统:

1、使用双apache web server前端;

2、采用AJP连接后段的3台Tomcat应用服务器,这些tomcat被配置成cluster, 因此需要考虑apache对后端的分配,分配采用完全平衡的方法;配置使用cookie来实现session stickness;

3、1台数据库服务器只有tomcat才需要连接,也不需要对Internet提供服务。

4、考虑系统的安全性和维护方便性;

5、通过rewrite规则配置把下属URL规则改写成友好的URL

http://server/webapp/getinfo?id=XXXX&name=YYYY –> http://server/getinfo/YYYY/XXXX

您需要提交

1、服务器规划,包括:

*网络结构图

*每台机器的IP地址分配

*每台机器上运行的关键软件

*您从安全性和维护性方面的考虑

2、Apache的以下配置文件给我们:

*extra/http-proxy-ajp.conf

*extra/http-rewrite.conf

2.你可以采取任何设备和不同操 作系统服务器设计对两台WWW服务器和两台FTP服务器做负载均衡,用网络拓扑图表示并加以说明!(方法越多越好)

第一种方法: DNS轮巡

www1 IN A 192.168.1.1

www2 IN A 192.168.1.2

www3 IN A 192.168.1.3

ftp1 IN A 192.1.1.4

ftp2 IN A 192.1.1.5

ftp3 IN A 192.1.1.6

www IN CNAME www1

www IN CNAME www2

www IN CNAME www3

ftp IN CNAME ftp1

ftp IN CNAME ftp2

ftp IN CNAME ftp3

;
阅读全文

与linux内核面试相关的资料

热点内容
程序员在广州上班 浏览:782
androidlinuxadt 浏览:510
广联达软件加密锁原装芯片 浏览:338
如何打开数据库服务器 浏览:310
kppm是什么app 浏览:538
python多个数组命名 浏览:191
a算法csdn 浏览:23
r720服务器什么年代 浏览:975
本地电脑怎么设置传奇服务器 浏览:1002
安卓10框架怎么制作 浏览:959
程序员退休工资待遇 浏览:609
湛江中文编程数控系统代理 浏览:419
openglandroid书 浏览:170
奇妙组件安卓版叫什么 浏览:729
微信授权什么app权重最高 浏览:11
php循环数组foreach 浏览:78
zip和app有什么区别 浏览:633
乖法快速算法 浏览:872
日本程序员一年工资 浏览:199
出国做程序员怎么样 浏览:736