概述
运维工程师面试题一
运维初试 1、以下为一个正则表达式,请问它的含义是? ^Sun[0-9][A-Z]x$
以Sum开头,x结尾,中间为0-9或A-Z
2、data目录下有多层文件 要求:修改data目录及其所有子文件的owner为 test,group为 testgroup
chown -R test:testgroup data
3、当前路径下存在一个log目录,log目录下至少有4个层级的文件表示,每个层级的文件有不同类别 要求:查找log目录下第二层最近5天内修改过的目录
find log -maxdepth 1 -type d -mtime -5
4、在机器上eth0网卡上抓来自192.168.9.73的包,目标的端口是10001,输出时打印包头和包的内容,不要转换地址。
1 2 3 4 5 -i eth0:指定监听的网络接口是eth0。 src 192.168.9.73:指定只捕获源IP地址为192.168.9.73的数据包。 dst port 10001:指定只捕获目的端口为10001的数据包。 -nn:禁止tcpdump对地址(IP地址和端口号)进行名称解析。 -X:以十六进制和ASCII码同时显示数据包的内容,既包括包头也包括数据内容。
tcpdump -i eth0 src 192.168.9.73 and dst port 10001 -nn -X
5、使用crontab设置如下定时任务,并将stdin和stderr重定向到/dev/null: 每天晚上22:15 执行/usr/bin/下的update.sh
每隔五分钟执行/usr/bin/的update.sh
1 2 15 22 * * * /usr/bin/update.sh >/dev/null 2>&1 */5 * * * * /usr/bin/update.sh >/dev/null 2>&1
6、file文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读与写,则该文件的权限为? rwx-rw-r
7、mysql 以test库为例,写出备份和恢复 mysqldump -u user -p test>test.bck.sql
mysqldump -u user -p test<test.bck.sql
8、使用docker命令,以后台方式启动一个nginx容器,要求 版本是:latest
可以通过host 80端口访问 可以通过host 的/data/nginx目录访问nginx html目录
docker run -itd --name nginx -p 80:80 -v /data/nginx:/usr/share/nginx/html nginx:latest
9、K8S中使用deployment,部署3个实例的nginx,要求: 版本是latest 可以通过主机host 8080端口访问nginx服务 也可以通过主机域名80端口访问nginx服务 可以通过host的/data/nginx 目前访问nginx html目录。
10、脚步test.sh里内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 #!/bin/bash a="Good Luck" b='$a' function test (){ local a=$1 b=$2 ;shift export c=$(eval echo $3 ) } test 10 20 30 $b echo $a ${b} $c
解读代码含义并说出结果
a=”Good Luck” b=’$a’ $a为字符串 执行test 10 20 30 $b的时候$b=’$a’ –>test 10 20 30 ‘$a’ test() 内部 local a=$1为局部变量,不会改变外部的a=”Good Luck” b=$2 b=20,左移一位,删除第一个参数10 test 20 30 ‘$a’ export定义环境变量,c=$(eval echo $3) eval 会将后面的代码扫描两次,第一次结果为$a,局部变量a=10,第二次扫描为10,c=10
结果: Good Luck 20 10
1 2 3 4 5 6 7 8 9 10 11 12 13 [root@jafardu ~] + a='Good Luck' + b='$a' + test 10 20 30 '$a' + local a=10 + b=20 + shift ++ eval echo '$a' +++ echo 10 + export c=10 + c=10 + echo Good Luck 20 10 Good Luck 20 10
11、有event表和work表分别如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 mysql> select * from event limit 3; +------------+------+------+-------+ | event_time | type | uid | score | +------------+------+------+-------+ | 2013-04-01 | 1 | 2344 | 34 | | 2013-04-02 | 2 | 2122 | 21 | | 2013-04-03 | 3 | 6744 | 9 | +------------+------+------+-------+ 3 rows in set (0.00 sec) mysql> select * from work limit 3; +------------+-----------+------+ | test_time | test_type | uid | +------------+-----------+------+ | 2013-04-01 | 12 | 2344 | | 2014-04-01 | 13 | 2122 | | 2014-04-02 | 14 | 6744 | +------------+-----------+------+ 3 rows in set (0.00 sec) 其中: event表里存放事件发生时间, 发生的种类,user的id,以及user的分数 work表里存放测试时间,测试类型的编号,user的id 要求: 在event表里找出4月4号到4月29号的user,统计他们发生event的次数以及总的分数(score),和socre的最大值,以及这个user在work表里这段时间参加test为11,12的次数
分析:
连接两个表:我们将通过uid字段连接event表和work表,以便能够访问与同一用户相关的所有信息。
限制日期范围:使用WHERE子句限定event表中event_time字段的日期在4月4号到4月29号之间。
筛选特定测试类型:在连接的表中筛选work表的test_type为11或12的记录。
分组和统计:按照uid分组,以便为每个用户计算事件发生的次数、总分数、最大分数,以及特定测试类型的参加次数。
1 2 3 4 5 6 7 8 9 10 11 12 13 select e.uid, COUNT (e.uid) AS event_count, SUM (e.score) AS total_score, MAX (e.score) AS max_score, COUNT (w.uid) AS work_count from event eLEFT JOIN work w ON e.uid = w.uid AND w.test_time BETWEEN '2013-04-01' AND '2013-04-29' AND w.test_type IN (11 ,12 ) where e.event_time BETWEEN '2013-04-01' AND '2013-04-29' GROUP BY e.uid;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 创建库中的数据 CREATE DATABASE student;USE student; create table event (event_time DATE , type INT , uid INT , score INT ); create table work (test_time DATE , test_type INT , uid INT ); insert into event VALUES ('2013-04-01' ,1 ,2344 ,34 ), ('2013-04-02' ,2 ,2122 ,21 ), ('2013-04-03' ,3 ,6744 ,9 ); insert into work values ('2013-04-01' ,12 ,2344 ), ('2014-04-01' ,13 ,2122 ), ('2014-04-02' ,14 ,6744 );
12、有两个文件内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 a.txt: 251235308 3064 33616578 8972 910088709 1243 343163213 1182 b.txt: 33616578 HN 189 910088709 GD 80 343163213 BJ 253 610112757 GD 90 使用awk处理两个文件得到以下输出: 251235308 3064 - - 33616578 8972 HN 189 910088709 1243 GD 80 343163213 1182 BJ 253 610112757 - GD 90
awk 'NR==FNR{b[$1]=$2 FS $3; next} {print $1, $2, (b[$1] ? b[$1] : "- -")} END{for (i in b) if (!a[i]) print i, "-", b[i]}' b.txt a.txt
13、Server上运行进程 gamesvrd,请制定一个监控方案(需脚本实现)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #!/bin/bash process="gamesvrd" if pgrep -x "$process " >/dev/nullthen echo "$process is running" else echo "$process stopped" echo "$process restarted" fi
1 2 3 4 5 6 7 8 9 10 11 >>> from urllib.parse import urlparse,parse_qs>>> url=urlparse('http://baidu.com/?a=c&b=d&r=45' )>>> params = parse_qs(url.query)>>> result = {k: v[0 ] for k,v in params.items()}>>> print (result){'a' : 'c' , 'b' : 'd' , 'r' : '45' } >>>
15、日常工作中遇到如下场景 日志里出现unable to attach to shared memory,可能的原因是什么,如何解决?
如何判断程序是否存在内存泄露?
rm删除文件后空间没有释放,可能的原因和解决方法
某台服务器出现CPU 100%,你如何分析?
一后端服务,发现在与用户通信时,偶概率会出现可以收到用户侧的数据包,但是发送给用户的数据包用户收不到的情况,请简述排障思路。