运维的面试题

文章目录

  • 一、Linux系统和Shell
    • 1. 写一个sed命令,修改/tmp/input.txt文件的内容,要求:(1) 删除所有空行;(2) 在非空行前面加一个"AAA",在行尾加一个"BBB",即将内容为11111的一行改为:AAA11111BBB
    • 2. 每周一下午三点将/tmp/logs目录下面的后缀为*.log的所有文件rsync同步到备份服务器192.168.1.100中同样的目录下面,crontab配置项该如何写:
    • 3. 找到/tmp/目录下面的所有名称以"_s1.jpg"结尾的普通文件,如果其修改日期在一天内,则将其打包到/tmp/back.tar.gz文件中
    • 4. 写出SHELL函数RevertInput,函数必须获取三个参数,然后将三个参数倒序echo打印出来,函数必须检查参数个数的合法性,如果参数非法,打印”Illegal parameters”,对于下面的输入:
    • 5. 如果一个系统使用LVM进行分区管理,请写出调整一个逻辑卷分区大小的命令:
    • 6. 如何找出当前系统中磁盘I/O读写占用最高的程序:
  • 二、 网络相关
    • 1. 一个域名是否可以配置多个A记录?一个域名是否可以配置成多个其他域名的CNAME?
    • 2. 请写出用tcpdump抓取符合如下条件包的命令:(1) 目标端口是 80;(2) 来源IP或者是1.1.1.1,或者是 2.2.2.2;(3) UDP包;
    • 3. 用netstat命令配合其他shell命令,按照来源IP统计下所有到80端口的ESTABLISHED状态链接的个数,输出结果类似(第一列为连接数,第二列为IP):
    • 4. 写出一个curl命令,访问指定服务器61.135.169.121上的如下URL:http://www.baidu.com/s?wd=test,访问的超时时间是20秒:
  • 三、 LAMP相关
    • 1. 写出如何给apache增加virtualhost,让访问http://www.test.com和 http://www.test.cn的时候,都打开/var/www/html目录下面的文件:
    • 2. 写一个shell命令,统计apache日志文件(access_log)中某一天中每个URL的访问次数,并按照次数由小到大的顺序排序输出:
    • 3. 如果配置mysql服务器的时候,配置了auto_increment_increment=3,请问这里的3意味着什么?
    • 4. 如何打开PHP文件的出错输出
  • 四、缓存、监控、KVM等
    • 1. 如何配置squid,让访问http://images.baidu.com的时候,自动访问源站:http://src.images.baidu.com
    • 2. 请说明下面zabbix监控项配置的意义:
    • 3. 如何给一个名称为CentOS62的KVM虚拟机创建快照
  • 五、综合问答:
    • 如果一个Linux系统响应十分缓慢,SSH进去后执行命令等一分钟才有响应,请说明各种可能的原因,并阐述如何分析并找到问题源头:

一、Linux系统和Shell

1. 写一个sed命令,修改/tmp/input.txt文件的内容,要求:(1) 删除所有空行;(2) 在非空行前面加一个"AAA",在行尾加一个"BBB",即将内容为11111的一行改为:AAA11111BBB

sed -i '/^$/d;s/\(^\|.*[^A]\)\(.*\)\([^B].*\|$ \)/AAA\2BBB/' /tmp/input.txt

2. 每周一下午三点将/tmp/logs目录下面的后缀为*.log的所有文件rsync同步到备份服务器192.168.1.100中同样的目录下面,crontab配置项该如何写:

crontab -e 0 15 * * 1 rsync -avz --include "*.log" --exclude "*" /tmp/logs/ 192.168.1.100:/tmp/logs/

3. 找到/tmp/目录下面的所有名称以"_s1.jpg"结尾的普通文件,如果其修改日期在一天内,则将其打包到/tmp/back.tar.gz文件中

find /tmp/ -type f -name "*_s1.jpg" -mtime -1 -print0 | tar -czvf /tmp/back.tar.gz --null -T -

4. 写出SHELL函数RevertInput,函数必须获取三个参数,然后将三个参数倒序echo打印出来,函数必须检查参数个数的合法性,如果参数非法,打印”Illegal parameters”,对于下面的输入:

RevertInput “this is para1” para2 para3
应该输出:
para3
para2
this is para1
(注:需要注意第一个参数中的空格)

RevertInput(){
    if [ $# -ne 3 ]; then
        echo "Illegal parameters"
    else
        echo "$3"
        echo "$2"
        echo "$1"
    fi
}

5. 如果一个系统使用LVM进行分区管理,请写出调整一个逻辑卷分区大小的命令:

lvresize -L +G /dev//

6. 如何找出当前系统中磁盘I/O读写占用最高的程序:

iotop -o -b -d 

二、 网络相关

1. 一个域名是否可以配置多个A记录?一个域名是否可以配置成多个其他域名的CNAME?

域名可以配置多个A记录,但不推荐。域名可以配置为多个其他域名的CNAME。

2. 请写出用tcpdump抓取符合如下条件包的命令:(1) 目标端口是 80;(2) 来源IP或者是1.1.1.1,或者是 2.2.2.2;(3) UDP包;

tcpdump -i eth0 -n -vv 'dst port 80 and (src 1.1.1.1 or src 2.2.2.2) and udp'

3. 用netstat命令配合其他shell命令,按照来源IP统计下所有到80端口的ESTABLISHED状态链接的个数,输出结果类似(第一列为连接数,第二列为IP):

12 202.165.123.2
35 202.165.123.2
69 202.165.123.2
netstat -ntp | grep ':80' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn

4. 写出一个curl命令,访问指定服务器61.135.169.121上的如下URL:http://www.baidu.com/s?wd=test,访问的超时时间是20秒:

curl -m 20 http://61.135.169.121/s?wd=test

三、 LAMP相关

1. 写出如何给apache增加virtualhost,让访问http://www.test.com和 http://www.test.cn的时候,都打开/var/www/html目录下面的文件:

<VirtualHost *:80>
    ServerName www.test.com
    ServerAlias www.test.cn
    DocumentRoot /var/www/html/
</VirtualHost>

2. 写一个shell命令,统计apache日志文件(access_log)中某一天中每个URL的访问次数,并按照次数由小到大的顺序排序输出:

awk '{print $7}' access_log | sort | uniq -c | sort -n

3. 如果配置mysql服务器的时候,配置了auto_increment_increment=3,请问这里的3意味着什么?

表示每次自增的步长为3

4. 如何打开PHP文件的出错输出

修改php.ini文件中的display_errors为On即可。

四、缓存、监控、KVM等

1. 如何配置squid,让访问http://images.baidu.com的时候,自动访问源站:http://src.images.baidu.com

在squid配置文件中添加以下内容:

acl images dstdomain .images.baidu.com
cache_peer src.images.baidu.com parent 80 0 no-query originserver name=myPeer
never_direct allow images
cache_peer_access myPeer allow images

2. 请说明下面zabbix监控项配置的意义:

UserParameter=dns.duration_[*],/opt/tools/dns_status.sh | grep “^$1:” | awk ‘{print $$3}’
答:
UserParameter是zabbix agent的一个自定义参数,该配置意味着调用/opt/tools/dns_status.sh脚本获取dns解析状态并返回第$1个结果。

3. 如何给一个名称为CentOS62的KVM虚拟机创建快照

virsh snapshot-create-as CentOS62 snapshot_name

五、综合问答:

如果一个Linux系统响应十分缓慢,SSH进去后执行命令等一分钟才有响应,请说明各种可能的原因,并阐述如何分析并找到问题源头:

回答:
可能的原因有很多,包括但不限于:系统负载过高、磁盘空间不足、网络带宽不足、进程卡死、服务异常、硬件故障等等。可以通过检查系统日志、排查进程占用情况、使用top或htop等工具查看系统负载情况、检查硬件状态等方式进行问题定位和解决。

你可能感兴趣的:(运维,linux,服务器)