《linux系统工程师面试题.doc》由会员分享,可在线阅读,更多相关《linux系统工程师面试题.doc(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流linux系统工程师面试题.精品文档.linux系统工程师面试题第一套1.查看Linux系统当前单个共享内存段的最大值(命令)ipcs -mipcs -a2.用什么命令查询指定IP地址的服务器端口题意应该是 nmap 和nbtscan 命令来扫吧。3.crontab中用什么命令定义某个程序执行的优先级别nice/renice:进程执行优先级概念:进程优先级:系统按进程优先级的不同分配CPU时间,优先级高的进程会得到更多的CPU使用时间,以提高速度,缩短总的执行时间。进程优先级范围:-20至19最高等级:-20最低等级:19系统管理员有权将进程
2、优先级设置为-1至-20,而普通用户只能设置0至19。进程运行的默认等级为0。用nice执行的进程其默认等级为10(即nice ,不指定等级时)。格式:nice nice - 如:(命令后加&表示以后台运行)vi & 优先等级0,默认等级。nice vi & 优先等级10,使用nice执行程序时的默认等级。nice -50 vi & 优先等级19,-号表示选项,等级50超过最低等级19,因此系统以等级19执行。nice -18 vi & 优先等级18。nice -50 vi & 优先等级-20,选项值为-50,超过最高等级-20,因此系统以等级-20执行。nice -18 vi & 优先等级-
3、18。通过ps -l可查看以上命令的执行情况(注意查看各vi进程NI值的不同)。重新调整正在执行的进程的优先级:调整指定PID进程的等级renice 注意:是参数,不是选项,没有前缀-号。调整指定用户的所有进程的等级renice .调整指定组的所有用户的所有进程的等级renice -g 4.如何让history命令显示具体时间HISTTIMEFORMAT=%Y-%m-%d %H:%M:%S expect HISTTIMEFORMAT重新开机后会还原,可以写etcprofile5.查看Linux系统当前指定用户的邮件队列mailq 命令打印两种类型的列表:mailq 命令列出如下所示的邮件队列:
4、Mail Queue(1 request)-QID- -Size- -Q-Time- -Sender/Recipient-AA02508 3 Thu Dec 17 10:01 root(User unknown)bad_usermailq -v 命令列出如下所示的邮件队列:Mail Queue (1 request)-QID- -Size- -Priority- -Q-Time- -Sender/Recipient-AA02508 3 1005 Dec 17 10:01 root(User unknown)bad_user6.查看Linux系统当前加载的库文件lsof7.Ext3文件系统如何恢
5、复RM命令删除文件(1).Ext3文件系统结构的简单介绍在 Linux所用的Ext3文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。每个文件还有一个节点,节点中包含有文件所有者,读写权限,文件类型等信息。对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。如果文件大于12个块,那么节点在12个块号之后存储一个间接块的块号,在这个间接块号所对应的块中,存储有256个文件数据块的块号(Ext2fs中每个块号占用4字节,这样一个块中所能存储的块号就是1024/4=256)。如果有更大的文件,那么还会在节点中出现二级间接块和三级间接块。(2).恢复被误删
6、文件的方法大多数Linux发行版都提供一个debugfs工具,可以用来对Ext3文件系统进行编辑操作。不过在使用这个工具之前,还有一些工作要做。首先以只读方式重新挂载被误删的文件所在分区。使用如下命令:(假设文件在/usr分区)mount -r -n -o remount /usr-r表示只读方式挂载;-n表示不写入/etc/mtab,如果是恢复/etc上的文件,就加上这个参数。如果系统说xxx partion busy,可以用fuser命令查看一下是哪些进程使用这个分区上的文件:fuser -v -m /usr如果没有什么重要的进程,用以下命令停掉它们:fuser -k -v -m /usr
7、然后就可以重新挂载这些文件系统了。如 果是把所有的文件统一安装在一个大的/分区当中,可以在boot提示符下用linux single进入单用户模式,尽量减少系统进程向硬盘写入数据的机会,要不干脆把硬盘挂在别的机器上。另外,恢复出来的数据不要写到/上面,避免破坏那些有用的数据。如果机器上有dos/windows,可以写到这些分区上面:mount -r -n /dev/hda1 /mnt/had然后就可以执行debugfs:(假设Linux在 /dev/hda5)#debugfs /dev/hda5就会出现debugfs提示符debugfs:使用lsdel命令可以列出很多被删除的文件的信息:deb
8、ugfs:lsdeldebugfs: 2692 deleted inodes found.Inode Owner Mode Size Blocks Time deleted164821 0 100600 8192 1/ 1 Sun May 13 19:22:46 200136137 0 100644 4 1/ 1 Tue Apr 24 10:11:15 2001196829 0 100644 149500 38/ 38 Mon May 27 13:52:04 2001debugfs:列出的文件有很多(这里找到2692个),第一字段是文件节点号,第二字段是文件所有者,第三字段是读写权限,接下来是
9、文件大小,占用块数,删除时间。然后就可以根据文件大小和删除日期判断那些是我们需要的。比如我们要恢复节点是196829的文件:可以先看看文件数据状态:debugfs:statInode: 196829 Type: regular Mode: 0644 Flags: 0x0 Version: 1User: 0 Group: 0 Size: 149500File ACL: 0 Directory ACL: 0Links: 0 Blockcount: 38Fragment: Address: 0 Number: 0 Size: 0ctime: 0x31a9a574 - Mon May 27 13:52
10、:04 2001atime: 0x31a21dd1 - Tue May 21 20:47:29 2001mtime: 0x313bf4d7 - Tue Mar 5 08:01:27 2001dtime: 0x31a9a574 - Mon May 27 13:52:04 2001BLOCKS:594810 594811 594814 594815 594816 594817 .TOTAL: 38然后就可以用dump指令恢复文件:debugfs:dump /mnt/hda/01.sav这样就把文件恢复出来了。退出debugfs:debugfs:quit另一种方法是手工编辑inode:debugfs
11、:miMode 0100644User ID 0Group ID 0Size 149500Creation time 0x31a9a574Modification time 0x31a9a574Access time 0x31a21dd1Deletion time 0x31a9a574 0Link count 0 1Block count 38File flags 0x0Reserved1 0File acl 0Directory acl 0Fragment address 0Fragment number 0Fragment size 0Direct Block #0 594810.Trip
12、le Indirect Block 0使用mi指令后每次显示一行信息以供编辑,其它行可以直接按回车表示确认,把deletion time改成0(未删除),Link count改成1。改好后退出debugfs:debugfs:quit然后用fsck检查/dev/hda5fsck /dev/hda5程序会说找到丢失的数据块,放在lost+found里面。8.查看当前系统某一硬件的驱动版本。比如网卡dmidecode9.DNS服务器有哪三种类型主 从 缓存10.apache目录访问身份验证的实施步骤(用htpasswd设置)htpasswd -c /目录 useralias /目录11.使用tcpd
13、ump监听主机IP为192.168.1.1,tcp端口为80的数据,写出相应命令tcpdump tcp port 80 host 192.168.1.112.简述IDS作用和实现原理入侵检测,设备放在intelnet进来的第一台路由后面。对进入路由的所有的包进行检测,如果有异常就报警。13.用sed修改test.txt的23行test为tset;sed 23s/test/tset/g test.txt第二套1.如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0:答:#iptables -t nat -A PREROUTING -d 192.
14、168.16.1 -p tcp dport 80 -j DNAT to 192.168.16.1:8080或者:#iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp dport 80 -j REDIRECT to-ports 80802.什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?3.包过滤防火墙与代理应用防火墙有什么区别,能列举几种相应的产品吗?4.iptables是否支持time时间控制用户行为,如有请写出具体操作步骤5.说出你知道的几种linux/unix发行版本6.列出l
15、inux常见打包工具并写相应解压缩参数(至少三种)7.计划每星期天早8点服务器定时重启,如何实现?8.列出作为完整邮件系统的软件,至少二类9,当用户在浏览器当中输入一个网站,说说计算机对dns解释经过那些流程?注:本机跟本地dns还没有缓存。答: a.用户输入网址到浏览器b.浏览器发出DNS请求信息c.计算机首先查询本机HOST文件,看是否存在,存在直接返回结果,不存在,继续下一步d.计算机按照本地DNS的顺序,向合法dns服务器查询IP结果,e.合法dns返回dns结果给本地dns,本地dns并缓存本结果,直到TTL过期,才再次查询此结果f.返回IP结果给浏览器g.浏览器根据IP信息,获取页
16、面10,我们都知道,dns既采用了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么时候采用udp协议?为什么要这么设计?答:这个题需要理解的东西比较的多,分一下几个方面a,从数据包大小上分:UDP的最大包长度是65507个字节,响应dns查询的时候数据包长度超过512个字节,而返回的只要前512个字节,这时名字解释器通常使用TCP从发原来的请求。b,从协议本身来分:大部分的情况下使用UDP协议,大家都知道UDP协议是一种不可靠的协议,dns不像其它的使用UDP的Internet应用(如:TFTP,BOOTP和SNMP等),大部分集中在局域网,dns查询和响应需要经过广域网,分组丢失
17、和往返时间的不确定性在广域网比局域网上更大,这就要求dns客户端需要好的重传和超时算法,这时候使用TCP11,一个EXT3的文件分区,当使用touch test.file命令创建一个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况,说说你的理由。答:两种情况,一种是磁盘配额问题,另外一种就是EXT3文件系统的设计不适合很多小文件跟大文件的一种文件格式,出现很多小文件时,容易导致inode耗尽了。12,我们都知道FTP协议有两种工作模式,说说它们的大概的一个工作流程?FTP两种工作模式:主动模式(Active FTP)
18、和被动模式(Passive FTP)在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORTN+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N
19、+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。13.编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下 1. #/bin/sh 2. #Programm : 3. # Us
20、ing for move currently directory to /tmp 4. for FileName in ls -l |awk $510240 print $9 5. do 6. mv $FileName /tmp 7. done 8. ls -al /tmp 9. echo “Done! “复制代码14.apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?apache主要有两种工作模式:prefork(apache的默认安装模式)和worker(可以在编译的时候加参数with-mpm-worker选择工作模式)prefork的特点是:(预派生)1.
21、这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销2.可以防止意外的内存泄漏3.在服务器负载下降的时候会自动减少子进程数(prefork的详细原理可以看我的博客另外一篇文章apache的性能优化)worker的特点是:支持混合的多线程多进程的多路处理模块如果对于一个高流量的HTTP服务器,worker MPM是一个比较好的选择,因为worker MPM占用的内存要比prefork要小。15.名词解释 HDLC,VTP,OSPF,RIP,DDOS,system V,GNU,netscreen,ssh,smartd,apache,WAIT_TIME 等等16.编写shell脚本获取本机
22、的网络地址。比如:本机的ip地址是:192.168.100.2/255.255.255.0,那么它的网络地址是192.168.100.1/255.255.255.0方法一: 1. #!/bin/bash 2. #This script print ip and network 3. file=”/etc/sysconfig/network-scripts/ifcfg-eth0 4. if -f $file ;then 5. IP=grep “IPADDR” $file|awk -F”=” print $2 6. MASK=grep “NETMASK” $file|awk -F”=” print
23、 $2 7. echo “$IP/$MASK” 8. exit 1 9. fi复制代码方法二: 1. #!/bin/bash 2. #This programm will printf ip/network 3. # 4. IP=ifconfig eth0 |grep inet |sed s/.*addr:/g|sed s/ Bcast.*$/g 5. NETMASK=ifconfig eth0 |grep inet |sed s/.*Mask:/g 6. echo “$IP/$NETMASK” 7. exit复制代码17.在命令行下发一邮件,发件人:123,收信人:abc二简述题:1.lin
24、ux下如何改IP,主机名,DNS2.linux下如何添加路由3.简述linux下编译内核的意义与步骤4.简述Linux启动过程5.简述DDOS攻击的原理6.简述Tcp三次握手的过程7.简述VPN,常见有哪几种?8.三:设计题:1.系统设计请考虑以下系统的设计. 您可以翻阅资料,查询任何您有帮助的资料、指南等。您有的资源:8台安装Linux (2.6内核) 的双网卡PC服务器以及相关开源软件,交换机Apache 2.2.xTomcat 5.5.X数据库系统最多8个Internet IP地址,请您设计一个系统:1、使用双apache web server前端;2、采用AJP连接后段的台Tomcat
25、应用服务器,这些tomcat被配置成cluster, 因此需要考虑apache对后端的分配,分配采用完全平衡的方法;配置使用cookie来实现session stickness;3、台数据库服务器只有tomcat才需要连接,也不需要对Internet提供服务。4、考虑系统的安全性和维护方便性;5、通过rewrite规则配置把下属URL规则改写成友好的URLhttp:/server/webapp/getinfo?id=XXXX&name=YYYY http:/server/getinfo/YYYY/XXXX您需要提交1、服务器规划,包括:网络结构图每台机器的IP地址分配每台机器上运行的关键软件您
26、从安全性和维护性方面的考虑2、Apache的以下配置文件给我们:extra/http-proxy-ajp.confextra/http-rewrite.conf2.你可以采取任何设备和不同操作系统服务器设计对两台WWW服务器和两台FTP服务器做负载均衡,用网络拓扑图表示并加以说明!(方法越多越好)这个面试已经过了快一个月了,前段时间没有发上来,今天稍微整理了以下发上来了。本来是想写感想那,但是从小学开始语文都不好。也不知道从那里写起。呵呵!这家公司挺大的,听别人说和sina一个级别的。具体的就在这里不说出来了。我从哪里面试出来之后我就想这是面试的SA,好像不是项目经理吧,外企就是不一样啊!还有
27、就是他在问了问题之后,我答完之后就接着下一个,中间没有任何什么其他的话,脸上也没有表情。面试完之后完回到家里靠自己的记忆记下了面试中的16道面试题。发给朋友看看,他们有的说变态,有的说这好像不是SA面试题吧。汗还是自己的能力不行啊。第三套1、在同一个网站中,当客户访问的时候,会出现有的页面访问的速度快而有的慢,系统和服务完全正常、网络带宽正常。这是那里出现问题了那?2、你以前做过的项目中,单台服务器的最大并发量是多少?说下你硬件的配置?3、你以前在工作中遇到的,一个困难的技术问题是什么,最后怎么解决的 ?4、你说下你技术的强项和不足?5、在一个系统架构中,我们为了避免单点故障,会怎么做?6、a
28、pache2.x版本中两个不同的运行模式是什么,有什么不同?7、如果给你很多台服务器,你该怎么去管理?8、如果给你一个100人的团队你怎么带好他们?8、如何优化linux系统,说出命令和相应的回值?9、怎么查看一个服务器运行正常?10、为什么有些公司会把自己的系统项目外包出去,而自己不招自己系统工程师,说说自己 的看法?11、如果一个web服务器出现问题,你会怎么做?12、如何添加一个apache的rewirte模块,rewirte模块的原理是什么?13、你以前所在的公司接到项目的时候,人员是如何人分配的? 14、你们给客户所做的项目,怎么保证客户系统的安全?15、你们为客户提供什么样的后期服
29、务?16、相对web服务来说,你们怎么知道当时客户的系统已经不能满足需求,当不能满足需求的时候,你们就用什么解决?以上就是我能记得的面试题了,还有几个记不起来了。真是一个比一个各色。面对这么各色的面试题,你能答出来多少?看完这个之后希望大家能把自己能打答出来的写下来!第四套1,编写shell脚本获取本机的网络地址。比如:本机的ip地址是:192.168.100.2/255.255.255.0,那么它的网络地址是192.168.100.1/255.255.255.02,当用户在浏览器当中输入一个网站,说说计算机对dns解释经过那些流程?注:本机跟本地dns还没有缓存。3,我们都知道,dns既采用
30、了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么时候采用udp协议?为什么要这么设计?4,一个EXT3的文件分区,当使用touch test.file命令创建一个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况,说说你的理由。5,我们都知道FTP协议有两种工作模式,说说它们的大概的一个工作流程?1,#!/bin/sh LAN=eth0 LOCALNET_MASK=ifconfig $LAN|sed -e s/.*Mask:( *)$/1/p -e d LOCALNET_ADDR=netstat -rn|
31、grep $LAN|grep $LOCALNET_MASK|cut -f1 -d LOCALNET=$LOCALNET_ADDR/$LOCALNET_MASK2,a.用户输入网址到浏览器 b.浏览器发出DNS请求信息 c.计算机首先查询本机HOST文件,看是否存在,存在直接返回结果,不存在,继续下一步 d.计算机按照本地DNS的顺序,向合法dns服务器查询IP结果, e.合法dns返回dns结果给本地dns,本地dns并缓存本结果,直到TTL过期,才再次查询此结果 f.返回IP结果给浏览器 g.浏览器根据IP信息,获取页面3,这个题需要理解的东西比较的多,分一下几个方面 a,从数据包大小上分:
32、UDP的最大包长度是65507个字节,响应dns查询的时候数据包长度超过512个字节,而返回的只要前512个字节,这时名字解释器通常使用TCP从发原来的请求。 b,从协议本身来分:大部分的情况下使用UDP协议,大家都知道UDP协议是一种不可靠的协议,dns不像其它的使用UDP的Internet应用 (如:TFTP,BOOTP和SNMP等),大部分集中在局域网,dns查询和响应需要经过广域网,分组丢失和往返时间的不确定性在广域网比局域网上更大,这就要求dns客户端需要好的重传和超时算法,这时候使用TCP4,两种情况,一种是磁盘配额问题,另外一种就是EXT3文件系统的设计不适合很多小文件跟大文件的
33、一种文件格式,出现很多小文件时,容易导致inode耗尽了。5,FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开
34、放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。第五套1.假设Apache产
35、生的日志文件名为access_log,在apache正在运行时,执行命令mvaccess_log access_log.bak,执行完后,请问新的apache的日志会打印到哪里,为什么?1、新的日志会打印在access_log.bak中,因为apache启动时会找到access_log文件,随时准备向文件中加入日志信息, 虽然此时文件被改名,但是由于服务正在运行,因为它的inode节点的位置没有变,程序打开的fd仍然会指向原来那个inode, 不会因为文件名的改变而改变。apache会继续向已改名的文件中追加日志,但是若重启apache服务,系统会检查access_log 文件是否存在,若不存
36、在则创建。2.在Shell环境下,如何查看远程Linux系统运行了多少时间?2、监控主机执行: ssh user被监控主机ip uptime 这样得到了被监控主机的uptime3.处理以下文件内容,将域名取出并进行计数排序,如处理:得到如下结果:域名的出现的次数 域名3 2 1 可以使用bash/perl/php/c任意一种3、rootlocalhost shell# cat file | sed -e s/http:/ -e s/.*/ | sort | uniq -c | sort -rn 3 2 1 rootcodfei4 shell# awk -F/ print $3 file |so
37、rt -r|uniq -c|awk print $1t,$23 2 1 4.如果得到随机的字串,长度和字串中出现的字符表可定义,并将字串倒序显示,如把0123456789作为基准的字串字符表,产生一个6位的字串642031,打印出的字串为130246,可使用bash/perl/php/c任意一种.4、 rootlocalhost # awk -v count=6 BEGIN srand();str=0123456789;len=length(str);for(i=count;i0;i-) marry=substr(str,int(rand()*len),1);for(i=count;i0;i-) printf(%c,marry);printf(n);for(i=0;i authorized_keys然后回到192.168.1.6机器直接rootcodfei .ssh# ssh 192.168.1.4Last login: Wed Aug 8 12:14:42 2007 from 192.168.1.6这样就可以了,里面偶尔涉及到权限问题。一般./ssh文件夹是755 authorized_keys为600或者644#脚本如下#!/bin/bash #SCRIPT:df_check.sh #Writeen by codfei Mon Sep 3 07:25:28 CS
限制150内