文章目录
- 一、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 +<size>G /dev/<VG>/<LV>
6. 如何找出当前系统中磁盘I/O读写占用最高的程序:
iotop -o -b -d <interval>
二、 网络相关
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等工具查看系统负载情况、检查硬件状态等方式进行问题定位和解决。