Linux运维工程师笔试题

分类:CentOS运维 阅读:75120 次

Linux运维工程师笔试题

一、基本知识题(共10题,每题3分)

1、用什么命令查询指定IP地址的服务器端口?



1yuminstall-y nmap


2、用什么命令定义某个程序执行的优先级别?

1nice renice


3、如何让history命令显示具体时间?

123HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"export HISTTIMEFORMAT重新开机后会还原,可以写/etc/profile



1

4、查看Linux系统当前指定用户的邮件队列命令是?

123456789101112131415161718192021[root@test4 ~]# mailq[root@test4 ~]# mail -u rootHeirloom Mail version 12.47/29/08.Type ? forhelp."/var/mail/root": 9messages 8unread1AnacronTue Jun 1806:4018/625"Anacron job 'cron.daily' ontest4.wolf.org">U2 AnacronWed Jun 1914:2918/624"Anacron job 'cron.daily' on test4.wolf.org"U3AnacronThu Jun 2013:3618/624"Anacron job 'cron.daily' ontest4.wolf.org"& 1Message1:From root@test4.wolf.orgTue Jun 1806:40:092013Return-Path: <root@test4.wolf.org>X-Original-To: rootDelivered-To: root@test4.wolf.orgFrom: Anacron <root@test4.wolf.org>To: root@test4.wolf.orgContent-Type: text/plain;charset="ANSI_X3.4-1968"Subject: Anacron job 'cron.daily'ontest4.wolf.orgDate: Tue, 18Jun 201306:40:09-0700(PDT)Status: RO/etc/cron.daily/mlocate.cron:/usr/bin/updatedb: can not open`/etc/updatedb.conf': Permission denied


5、查看Linux系统当前加载的库文件?

1lsof


6.Ext4文件系统如何恢复rm命令删除文件

123456789101112131415161718192021222324252627282930Linux下删除文件并不是真实的删除磁盘分区中的文件,而是将文件的inode节点中的扇区指针清除,同时释放这些数据对应的数据块,当释放的数据块被系统重新分配时,那些被删除的数据就会被覆盖,所以误删除数据后,应马上卸载文件所在的分区。每个文件有inode和block组成,inode是文件系统组成的最基本单元,它保存着文件的基本属性(大小、权限、属主组等)和存放的位置信息。而 block用来存储数据。类似key-value,inode就是key,block对应value,通过key查找key对应的value。类似 python的字典。必须先umount要恢复文件的分区或者把分区改为只读模式,命令:mount ?o remount,ro 分区(例如:dev/hda1)或者mount -n -r -o remount /dba1 最好尽快将所在分区修改为只读方式,防止数据被覆盖使用。linux下面查看文件系统的方法有:1、mount命令#mount/dev/sda1 on / type ext4表示sda1 的文件系统是ext4 类型的。2、命令df# df -ThFilesystem Type Size Used Avail Use% Mounted on/dev/sda1 ext4 13G 7.6G 4.2G 65% /df 的-T参数就可以显示文件系统的类型,-h参数让其显示的更人性化。3、命令 more /etc/fstab# more /etc/fstab 通过配置文件查看软件下载:wget http://sourceforge.net/projects/extundelete/files/extundelete/0.2.0/extundelete-0.2.0.tar.bz2/download安装软件:yum install e2fsprogs-devel libcom_err-devel -ytar -jxfextundelete-0.2.0.tar.gbz21.cdextundelete-0.2.02../configure3.make4.makeinstall执行恢复动作:单个文件的恢复:extundelete /dev/sdaX --restore-file /*/*....*/file目录恢复:extundelete /dev/sdaX --restore-directory /*/*....*/dir恢复近期被删的所有东西:extundelete /dev/sdaX --restore-all


7、使用tcpdump监听主机IP为192.168.1.1,tcp端口为80的数据,同时将结果保存输出到tcpdump.log,请写出相应命令。

1[root@test4 ~]# tcpdump tcp port 80andhost 192.168.46.128?w/root/sss


8、简述IDS作用和实现原理。

1入侵检测,设备放在intelnet进来的第一台路由后面。对进入路由的所有的包进行检测,如果有异常就报警。



9、用sed修改test.txt的23行test为tset;

1sed ‘23s/test/tset/g ’ test.txt


10、一个EXT3的文件分区,当使用touchtest.file命令创建一个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大约只使用了60%的磁盘空间,为什么会出现这个情况,说说你的理由。

121,用户磁盘配额的问题2,ext3文件系统设计的时候不适合很多小文件和大文件一样的文件格式,很多小文件会导致inode耗尽


11、当用户在浏览器当中输入一个网站,说说计算机对dns解释经过那些流程?(注:本机跟本地dns还没有缓存)

1234567a.用户输入网址到浏览器b.浏览器发出DNS请求信息c.计算机首先查询本机HOST文件,看是否存在,存在直接返回结果,不存在,继续下一步d.计算机通过/etc/resolv.conf按照本地DNS的顺序,向合法dns服务器查询IP结果,e.合法dns返回dns结果给本地dns,本地dns并缓存本结果,直到TTL过期,才再次查询此结果f.返回IP结果给浏览器g.浏览器根据IP信息,获取页面


12.DNS服务器有哪三种类型


1主 从 缓存


二、简述题(共10题,每题7分)

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

123[root@test4 ~]#vim/etc/sysconfig/network-scripts/ifcfg-eth0[root@test4 ~]#vim/etc/sysconfig/network[root@test4 ~]# vim/etc/resolv.conf


2、用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)"

请写shell实现输出top10的IP列表。

12[root@test4logs]# awk '{print $1}'access.log |sort|uniq -c |head -n 1031192.168.46.1



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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109编译内核的意义在于让硬件设备更稳定的发挥其应有的效能;新内核可以在http://www.kernel.org下载。先把linux-2.6.18.2.tar.bz2 复制到/usr/src/的下面tar ?jxvf linux-2.6.18.2.tar.bz2cd linux-2.6.18.2make mrproper把原来编译产生的垃圾删除配置内核可以根据需要与爱好使用下面命令中的一个:#make config (基于文本的最为传统的配置界面)#make menuconfig (基于文本选单的配置界面)#make xconfig (基于图形窗口模式的配置界面)#make oldconfig (如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)进行配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。例如,如果需要内核支持DOS分区的文件系统,则要在文件系统部分选择FAT或DOS系统支持;系统如果配有网卡、PCMCIA卡等,需要在网络配置中选择相应卡的类型。选择相应的配置时,有三种选择,它们分别代表的含义如下:“Y”-将该功能编译进内核“N”-不将该功能编译进内核“M”-将该功能编译成可以在需要时动态插入到内核中的模块。将与核心其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响。许多功能都可以这样处理,例如像上面提到的网卡的支持、对FAT等文件系统的支持。其实现在编译内核最关键的地方就是配置内核。我一般用make menuconfig配置内核。配置2.6.0内核时如果你的主板是Intel芯片的话,你用默认配制也许就可以得到一个满意的内核哦。做法是make menuconfig后离开时选择保存。这里的难点是pci,如果你硬盘是IDE的那一定要选择好你主板上南桥芯片。SCSI的话就是要选择上你的SCSI卡型号。还有就是网卡,声卡芯片的型号了,他们的型号你都可以用lspci 查找到比如我的是。[root@leo boot]# lspci00:00.0Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)00:01.0PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)00:07.0ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 08)00:07.1IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)00:07.2USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB00:07.3Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 08)00:0f.0VGA compatible controller: VMware Inc [VMware SVGA II] PCI Display Adapter00:10.0SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)00:11.0Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)00:12.0Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 02)编译配置在这一部分涉及几个重要模块的配置请,特别注意.一般用"make menuconfig"命令来配置内核.输入以上命令后出现一个菜单界面,用户可以对需要的模块.下面着重讲几个重要的配置1)文件系统请务必要选中ext3文件系统,File systems--->[*] Ext3 journalling file system support[*] Ext3 Security Labels[*] JBD (ext3) debugging support  以上三项一定要选上,而且要内建(即 标*). 这个非常重要,在配置完后一定要检查一下.config文件有没有"CONFIG_EXT3_FS=y"这一项. 如果不 是"CONFIG_EXT3_FS=y"而是"CONFIG_EXT3_FS=m",你在运行内核时就会遇上以下错 误: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed2)网卡驱动  请务必把自己网卡对应的驱动编译进内核,比较普遍的网卡是realtek 8139,以下就是这种网卡的配置,以供参考Device Drivers--->Networking support--->Ethernet (10or 100Mbit) ---><*> RealTek RTL-8139C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)<*> RealTek RTL-8139PCI Fast Ethernet Adapter support3)声卡驱动  也要选择自己声卡对应的驱动编译进内核,比较普遍的声卡是i810_audio,以下就是这种声卡的配置,以供参考Device Drivers --->Sound ---><*> Sound card supportAdvanced Linux Sound Architecture ---><*> Advanced Linux Sound Architecture<*> Sequencer support< > Sequencer dummy client<*> OSS Mixer API<*> OSS PCM (digital audio) API[*] OSS Sequencer API<*> RTC Timer supportPCI devices ---><*> Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111Open Sound System --->< > Open Sound System (DEPRECATED)以上三项配置关系到新内核能否正常运行,请备加注意.其他的配置如果不是很了解,大可以按默认的选择.#make dep (确保关键文件在正确的位置) 2.5.*-2.6.0都不需要了。其实2.4.*某些内核也不需要了。#make clean (确保所有有关文件都处于最新版本状态)#make zImage (编译压缩形式的内核)在需要内核支持较多的外设和功能时,内核可能变得很大,此时可以编译大内核:#make bzImage编译的时间与机器的硬件条件及内核的配置等因素有关,所获得的内核的位置在/usr/src/linux/arch/i386/boot目录下,当然这里假设用户的CPU是x86型的。如果选择了可加载模块,编译完内核后,要对选择的模块进行编译:#make modules (编译选择的模块)#make module_install (将编译后的模块转移到系统标准位置)# make install上面的命令"make install"将:(1)把压缩内核映象拷贝到/boot目录下, 并创建相应的System.map符号链接;(2)修改bootloader的配置文件;(3)调用mkinitrd程序创建内核的initrd映象. 对于GRUB而言, 将在/boot/grub/grub.conf配置文件增加如下类似的配置行:title Red Hat Linux (2.***)root(hd0, 1)kernel /boot/vmlinuz-2.*** ro root=LABEL=/initrd /boot/initrd-2.***.img模块在系统中的标准目录位于/lib/modules/x.y.z,后面的x.y.z是版本号,为安全起见,在运行#make modules_install之前最好对/lib/modules进行备份。模块通常是带有扩展名.o的文件,使用命令#lsmod可以对当前内核的模块进行列表。我一般是make bzImage;make modules;make module_install; make install运行新内核之前,请检查一下/boot/grub/grub.conf的内容,下面的配置可作参考# grub.conf generated by anaconda## Note that you donot have to rerun grub after making changes to thisfile# NOTICE: You have a /boot partition. This means that# all kernel and initrd paths are relative to /boot/, eg.# root (hd0,0)# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00# initrd /initrd-version.img#boot=/dev/hdadefault=0timeout=5splashimage=(hd0,0)/grub/splash.xpm.gzhiddenmenutitle Fedora Core (2.6.18.2)root (hd0,0)kernel /vmlinuz-2.6.18.2ro root=/dev/VolGroup00/LogVol00 rhgb quietinitrd /initrd-2.6.18.2.imgtitle Fedora Core (2.6.18-1.2798.fc6)root (hd0,0)kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00 rhgb quietinitrd /initrd-2.6.18-1.2798.fc6.img现在重启机器,即可测试最新的内核。



4、简述Linux启动过程

12345678910111213141516171819202122计算机开机是一个神秘的过程。我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面。然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而是一个命令行或者错误信息。了解计算机开机过程有助于我们修复开机可能出现的问题。1) 最初始阶段:当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/OutputSystem)读取其中所存储的程序。这一程序通常知道一些直接连接在主板上的硬件(硬盘,网络接口,键盘,串口,并口)。现在大部分的BIOS允许你从软盘、光盘或者硬盘中选择一个来启动计算机。下一步,计算机将从你所选择的存储设备中读取起始的512bytes(比如光盘一开是的512bytes,如果我们从光盘启动的话)。这512bytes叫做主引导记录MBR (masterboot record)。MBR会告诉电脑从该设备的某一个分区(partition)来装载引导加载程序(boot loader)。Boot loader储存有操作系统(OS)的相关信息,比如操作系统名称,操作系统内核(kernel)所在位置等。常用的boot loader有GRUB和LILO。随后,boot loader会帮助我们加载kernel。kernel实际上是一个用来操作计算机的程序,它是计算机操作系统的内核,主要的任务是管理计算机的硬件资源,充当软件和硬件的接口。操作系统上的任何操作都要通过kernel传达给硬件。Windows和Linux各自有自己kernel。狭义的操作系统就是指kernel,广义的操作系统包括kernel以及kernel之上的各种应用。(Linus Torvalds与其说是Linux之父,不如说是Linux kernel之父。他依然负责Linux kernel的开发和维护。至于Ubuntu, Red Hat, 它们都是基于相同的kernel之上,囊括了不同的应用和界面构成的一个更加完整的操作系统版本。)实际上,我们可以在多个分区安装boot loader,每个boot loader对应不同的操作系统,在读取MBR的时候选择我们想要启动的boot loader。这就是多操作系统的原理。小结:BIOS -> MBR ->boot loader -> kernel2) kernel如果我们加载的是Linux kernel,Linux kernel开始工作。kernel会首先预留自己运行所需的内存空间,然后通过驱动程序(driver)检测计算机硬件。这样,操作系统就可以知道自己有哪些硬件可用。随后,kernel会启动一个init进程。它是Linux系统中的1号进程(Linux系统没有0号进程)。到此,kernel就完成了在计算机启动阶段的工作,交接给init来管理。小结: kernel -> init process3) initprocess(根据boot loader的选项,Linux此时可以进入单用户模式(singleuser mode)。在此模式下,初始脚本还没有开始执行,我们可以检测并修复计算机可能存在的错误)随后,init会运行一系列的初始脚本(startup scripts),这些脚本是Linux中常见的shell scripts。这些脚本执行如下功能:设置计算机名称,时区,检测文件系统,挂载硬盘,清空临时文件,设置网络……当这些初始脚本,操作系统已经完全准备好了,只是,还没有人可以登录!!!init会给出登录(login)对话框,或者是图形化的登录界面。输入用户名(比如说vamei)和密码,DONE!在此后的过程中,你将以用户(user)vamei的身份操作电脑。此外,根据你创建用户时的设定,Linux还会将你归到某个组(group)中,比如可以是stupid组,或者是vamei组。所以你将是用户vamei,同时是vamei组的组员。(注意,组vamei和用户vamei只是重名而已,就好想你可以叫Dell, 同时还是Dell公司的老板一样。你完全也可以是用户vamei,同时为stupid组的组员)总结:BIOS ->MBR -> boot loader -> kernel -> init process -> login用户,组。




5.你说下你技术的强项和不足?


6.如果给你300台服务器,你该怎么去管理?


7.在一个系统架构中,我们为了避免单点故障,会怎么做?

1系统集群高可用


8、 xen环境下,如何调整虚拟机内存及vcpu数?

12更改虚拟机分配的CPU数量。要更改此设置,既可以利用虚拟机管理器(Virtual Machine Manager)进行,也可以使用xm vcpu-set命令。例如,将domain 1分配的VCPU数改为4个,则:xm vcpu-set14



9、简述下一般调整哪些内核参数

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485linux 内核参数调整说明所有的TCP/IP调优参数都位于/proc/sys/net/目录。例如, 下面是最重要的一些调优参数, 后面是它们的含义:1. /proc/sys/net/core/rmem_max — 最大的TCP数据接收缓冲。2. /proc/sys/net/core/wmem_max — 最大的TCP数据发送缓冲。3. /proc/sys/net/ipv4/tcp_timestamps — 时间戳在(请参考RFC 1323)TCP的包头增加12个字节。4. /proc/sys/net/ipv4/tcp_sack — 有选择的应答。5. /proc/sys/net/ipv4/tcp_window_scaling — 支持更大的TCP窗口. 如果TCP窗口最大超过65535(64KB), 必须设置该数值为16. rmem_default — 默认的接收窗口大小。7. rmem_max — 接收窗口的最大大小。8. wmem_default — 默认的发送窗口大小。9. wmem_max — 发送窗口的最大大小。/proc目录下的所有内容都是临时性的, 所以重启动系统后任何修改都会丢失。建议在系统启动时自动修改TCP/IP参数:把下面代码增加到/etc/rc.local文件, 然后保存文件, 系统重新引导的时候会自动修改下面的TCP/IP参数:echo 256960> /proc/sys/net/core/rmem_defaultecho 256960> /proc/sys/net/core/rmem_maxecho 256960> /proc/sys/net/core/wmem_defaultecho 256960> /proc/sys/net/core/wmem_maxecho 0> /proc/sys/net/ipv4/tcp_timestampsecho 1> /proc/sys/net/ipv4/tcp_sackecho 1> /proc/sys/net/ipv4/tcp_window_scaling

热门推荐