百度 Linux 运维工程师面试真题

百度面了好久了,两个月了,估计都快成馊面了,一跟面条在走边边一不小心掉进了大海,于是

就有了汤面_经历非技术总结就两句话,幸运的是在朋友的帮助下顺利通过笔试,还认识了

一帮 super 牛 B 的人,不幸的是最终还是由于主观客观擦肩而过~~

我投的是 linux 运维,那个时候 sed,awk 根本不会(不会这两个就知道我脚本水平),就知道一

些 basic command! samba,dns,svn 也是半解,telnet,vnc 还好点.再次鄙视下自己.还好暑

假狂补了补.废话了那么多,进正题吧~~,估计没人愿意听我在这里家常!

上面的各种服务,blog 里都有_,下面的题目汇总了我自己的和一些朋友的_

1.基础常见内容

a.apache 虚拟主机设定

这个我以前的日志已写了,这里就不 say 了~~~其实也 easy 现在觉得

b.假设 Apache 产生的日志文件名为 access_log,在 apache 正在运行时,执行命令 mv

access_log access_log.bak,执行完后,请问新的 apache 的日志会打印到哪里?

新的日志会在 access_log.bak 中,因为 apache 启动时会找 access_log 文件,随时准备向

文件中加入日志信息,虽然此时文件被改名,但是由于服务正在运行,因为它的 inode 节点的

位置没有变,程序打开的 fd 仍然会指向原来那个 inode

不会因为文件名的改变而改变.apache 会继续向已改名的文件中追加日志,但是若重启

apache 服务,系统会检查 access_log 文件是否存在,若不存在则创建.

2.在 Shell 环境下,如何查看远程 Linux 系统运行了多少时间?

uptime | awk '{print $3}'

3.处理以下文件内容,将域名取出并进行计数排序,

如处理: http://www.baidu.com/more/

http://www.baidu.com/guding/more.html

http://www.baidu.com/events/20060105/photomore.html

http://hi.baidu.com/browse/

http://www.sina.com.cn/head/www20021123am.shtml

http://www.sina.com.cn/head/www20041223am.shtml

得到如下结果:

域名的出现的次数 域名

3 www.baidu.com

2 www.sina.com.cn

1 hi.baidu.co 百度总喜欢这种题目,我上篇日志的 site inurl 也是,这个是统计域名的,还有一

个说是统计文件名的,就是后面的 index 没有的就直接为空,这个用 shell 怎么实现还在思考

中,想出来了再写

cat file | sed -e ' s/http:////' -e ' s//.*//' | uniq -c | sort -rn

awk -F/ '{print $3}' file |uniq -c | sort -r |awk '{print $1"\t",$2}'

4.如果得到随机的字串,长度和字串中出现的字符表可定义,并将字串倒序显示,

如把 0123456789 作为基准的字串字符表,产生一个 6 位的字串 642031,打印出的字串为

130246,可使用 bash/perl/php/c 任意一种.

awk -v count=6 ‘BEGIN

{srand();str=”0123456789″;len=length(str);for(i=count;i>0;i–)

marry[i]=substr(str,int(rand()*len),1);for(i=count;i>0;i–)

printf(“%c”,marry[i]);printf(“\n”);for(i=0;i<=count;i++)

printf(“%c”,marry[i]);printf(“\n”)}’

5.如何查看当前 Linux 系统的状态,如 CPU 使用,内存使用,负载情况等.

当时问到这个的时候我超级自信,可是你知道/proc 目录下的那些数字目录代表什么吗??教

训阿!!!(ps:不懂的自己 google_)个人的小教训

Linux 系统中/proc 是个伪文件目录,不占用系统空间,及时的反应出内存现在使用的进程情

况.其中许多文件都保存系统运行状态和相关信息对于/proc 中文件可使用文件查看命令浏

览其内容,文件中包含系统特定信息:

cpuinfo 主机 CPU 信息

filesystems 文件系统信息

meninfo 主机内存信息

version Linux 内存版本信息

diskstatus 磁盘负载情况

另外 top 命令可以动态的显示当前系统进程用户的使用情况,而且是动态的显示出来,尤其

是在该命令显示出来的对上方对系统的情况进行汇总.

free 命令呢可以查看真实使用的内存 一般用 free -m

使用 ps aux 可以查看详细的每个进程的使用状况

dmesg 也是常用来查看系统性能的命令

告诉我那些是进程后又问如何查看一个进程所使用的文件句柄?

/proc/进程号/fd/的个数就行了

6.查看 apache 进程数

个人在 ubuntu 下测试成功的是

ps aux | grep “apache2” | grep -v “apache2” | wc -l

个别的 command,与 OS 有关!!!

下面的是别人滴_

##########################

1、/proc/sys 子目录的作用

该子目录的作用是报告各种不同的内核参数,并让您能交互地更改其中的某些。与 /proc

中所有其他文件不同,该目录中的某些文件可以写入,不过这仅针对 root,这个 google 下

多的是 oh no,please baidu,baidu 更懂中文~~

2、将一个文本的奇数行和偶数行合并,第 2 行和第 3 行合并

a.将所有奇数行和偶数行合并,就是去奇数行的换行符了哦

sed ‘$!N;s/\n/ /g’ test

b.就是去第二行的了哦

sed -n -e 2p -e 3p test | sed ‘$!N;s/\n/ /g’ test

3、read 命令 2 秒后自动退出

read -t 2

4.下面的这两个我没有 DIY 过,没环境阿,就自己一台笔记本

自动 ftp 上传

#!/bin/sh

ftp -n<<END_FTP

open 192.168.1.4

user codfei duibuqi //用户名 codfei 密码 duibuqi

binary

prompt off //关闭提示

mput test //上传 test

close

bye

END_FTP

自动 ssh 登陆 从 A 到 B 然后再到 c

#!/usr/bin/expect -f

set timeout 30

spawn ssh codfei@B

expect “password:”

send “pppppp\r”

expect “]*”

send “ssh codfei@C\r”

expect “password:”

send “pppppp\r”

interact

7、sed awk grep 哪个最好

我答的是 哪个掌握的精通,都很好,但是还是问我哪个最好,我只能说 awk 了,对于行操

作和列操作都可以操作的很好。

8、grep -E -P 是什么意思

我说的是-E, –extended-regexp 采用规则表示式去解释样式。 -P perl 的

9、还问了我对运维这个工作的理解,和应该具备的素质。

…………

【特别说明】

面试真题属于应试者记忆问题的再现,会与真实面试情况存在差别,建议你参考

多家企业的 Linux 运维面试题目,增加通过率。