运维面试必会题目2
1、如何能把/mnt/test.txt 拷贝到/tmp 不提示的覆盖掉已有的 test.txt 文件。
/bin/cp /mnt/test.txt /tmp
2、只查看 oldboy.txt 文件(共 100 行)内第 20 到第 30 行的内容。
sed -n '20,30p' oldboy.txt
3、请执行命令取出 linux 中 eth0 的 IP 地址。
hostname -I 或者 ifconfig eth0|awk -F "[ :]+" 'NR==2{print $4}'
4、每周日上午 9:30 来老男孩 linux 培训上课(用/oldboy.sh 代替),请给出完整配置过程。
30 9 * * 0 /bin/sh /oldboy.sh &>/dev/null
5、请给出 10 个 vi/vim 编辑器常用操作命令包括快捷键
保存::wq :x 删除:dd 复制:yy 进入输入模式:i o 进入文本模式:esc
6、写个定时任务删除 7 天前访问日志。
#!/bin/sh
find /var/log/access -type f -atime -7 |xargs rm -f
7、/etc/fstab 文件最后两列的数字分别表示什么意思?
文件系统 备份
8、R720 1T 的硬盘 6 块做好 RAID5,请问如何安装 Centos 系统并按如下方式分区。
/boot 200m,/ 100G,swap 16G ,/data 剩余
9、请写出以下端口对应的服务?
端口:21 22 25 3306 873 161 111 3389 80 443 110
21 ftp 23 telnet 25 3306 mysql 873 rysnc 161 snmp 3389远程桌面 80http 443 https 110 pop3
22 ssh 53DNS 5666 nrpe
10、如果主机无法连接网络,请给出你的详细的排查思路?
①首先确定物理链路是否联通正常。
②查看本机IP,路由,DNS的设置情况是否达标。
③telnet检查服务器的WEB有没有开启以及防火墙是否阻拦。
④ping一下网关,进行最基础的检查,通了,表示能够到达服务器。
⑤测试到网关或路由器的通常情况,先测网关,然后再测路由器一级一级的测试。
⑥测试ping公网ip的通常情况(记住几个外部IP),
⑦测试DNS的通畅。ping出对应IP。
⑧通过以上检查后,还在网管的路由器上进行检查。
11、批量随机创建 10 个以 html 结尾的文件
dir=/root/wyb/test10/ [ ! -d $dir ] && mkdir -p $dir for i in `seq 10` do touch $dir`echo $RANDOM|md5sum|cut -c 1-10`_oldboy.html done
12、请再上面每个文件名的结尾增加 oldboy 字符串(扩展名前)
13、批量创建 10 个用户,设置随机 8 位密码。
#!/bin/bash
for
i
in
`
seq
-w 10`
do
pass=`
echo
$RANDOM|md5sum |
cut
-c 1-8`
#使用随机数做密码的时候,一定要定义变量,否则生成的密码和最后记录的密码不统一
useradd
user$i &&
echo
$pass |
passwd
--stdin user$i
echo
-e
"user:user$i \t pass:$pass"
>>
/tmp/user
.log
done
14、请描述 http 状态码的含义,并举一个你在企业中发生的案例。
状态码:301 403 404 500 502 503 504
http协议的状态码
1xx(临时响应)
表示临时响应并需要请求者继续执行操作的状态码。
100(继续)
请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
101(切换协议)
请求者已要求服务器切换协议,服务器已确认并准备切换。
2xx(成功)
表示成功处理了请求的状态码。
200(成功)
服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。如果是对您的 robots.txt 文件显示此状态码,则表示Googlebot 已成功检索到该文件。
201(已创建)
请求成功并且服务器创建了新的资源。
202(已接受)
服务器已接受请求,但尚未处理。
203(非授权信息)
服务器已成功处理了请求,但返回的信息可能来自另一来源。
204(无内容)
服务器成功处理了请求,但没有返回任何内容。
205(重置内容)
服务器成功处理了请求,但没有返回任何内容。与 204响应不同,此响应要求请求者重置文档视图(例如,清除表单内容以输入新内容)。
206(部分内容)
服务器成功处理了部分 GET 请求。
3xx(重定向)
要完成请求,需要进一步操作。通常,这些状态码用来重定向。Google 建议您在每次请求中使用重定向不要超过 5次。您可以使用网站管理员工具查看一下 Googlebot 在抓取重定向网页时是否遇到问题。诊断下的网络抓取页列出了由于重定向错误导致Googlebot 无法抓取的网址。
300(多种选择)
针对请求,服务器可执行多种操作。服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301(永久移动)
请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD请求的响应)时,会自动将请求者转到新位置。您应使用此代码告诉 Googlebot 某个网页或网站已永久移动到新位置。
302(临时移动)
服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来响应以后的请求。此代码与响应 GET 和 HEAD 请求的301 代码类似,会自动将请求者转到不同的位置,但您不应使用此代码来告诉 Googlebot 某个网页或网站已经移动,因为Googlebot 会继续抓取原有位置并编制索引。
303(查看其他位置)
请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。对于除 HEAD之外的所有请求,服务器会自动转到其他位置。
304(未修改)
自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP标头)。服务器可以告诉 Googlebot 自从上次抓取后网页没有变更,进而节省带宽和开销。
.
305(使用代理)
请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。
307(临时重定向)
服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来响应以后的请求。此代码与响应 GET 和 HEAD 请求的301代码类似,会自动将请求者转到不同的位置,但您不应使用此代码来告诉 Googlebot 某个页面或网站已经移动,因为 Googlebot会继续抓取原有位置并编制索引。
4xx(请求错误)
这些状态码表示请求可能出错,妨碍了服务器的处理。
400(错误请求)
服务器不理解请求的语法。
401(未授权)
请求要求身份验证。对于登录后请求的网页,服务器可能返回此响应。
403(禁止)
服务器拒绝请求。如果您在 Googlebot 尝试抓取您网站上的有效网页时看到此状态码(您可以在 Google网站管理员工具诊断下的网络抓取页面上看到此信息),可能是您的服务器或主机拒绝了 Googlebot 访问。
404(未找到)
服务器找不到请求的网页。例如,对于服务器上不存在的网页经常会返回此代码。
如果您的网站上没有 robots.txt 文件,而您在 Google 网站管理员工具“诊断”标签的 robots.txt页上看到此状态码,则这是正确的状态码。但是,如果您有 robots.txt 文件而又看到此状态码,则说明您的 robots.txt文件可能命名错误或位于错误的位置(该文件应当位于顶级域,名为 robots.txt)。
如果对于 Googlebot 抓取的网址看到此状态码(在”诊断”标签的 HTTP 错误页面上),则表示 Googlebot跟随的可能是另一个页面的无效链接(是旧链接或输入有误的链接)。
405(方法禁用)
禁用请求中指定的方法。
406(不接受)
无法使用请求的内容特性响应请求的网页。
407(需要代理授权)
此状态码与 401(未授权)类似,但指定请求者应当授权使用代理。如果服务器返回此响应,还表示请求者应当使用代理。
408(请求超时)
服务器等候请求时发生超时。
409(冲突)
服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。服务器在响应与前一个请求相冲突的 PUT请求时可能会返回此代码,以及两个请求的差异列表。
410(已删除)
如果请求的资源已永久删除,服务器就会返回此响应。该代码与404(未找到)代码类似,但在资源以前存在而现在不存在的情况下,有时会用来替代 404 代码。如果资源已永久移动,您应使用 301指定资源的新位置。
411(需要有效长度)
服务器不接受不含有效内容长度标头字段的请求。
412(未满足前提条件)
服务器未满足请求者在请求中设置的其中一个前提条件。
413(请求实体过大)
服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414(请求的 URI 过长)
请求的 URI(通常为网址)过长,服务器无法处理。
415(不支持的媒体类型)
请求的格式不受请求页面的支持。
416(请求范围不符合要求)
如果页面无法提供请求的范围,则服务器会返回此状态码。
417(未满足期望值)
服务器未满足”期望”请求标头字段的要求。
5xx(服务器错误)
这些状态码表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
500(服务器内部错误)
服务器遇到错误,无法完成请求。
501(尚未实施)
服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
502(错误网关)
服务器作为网关或代理,从上游服务器收到无效响应。
503(服务不可用)
服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
504(网关超时)
服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505(HTTP 版本不受支持)
服务器不支持请求中所用的 HTTP 协议版本。
15、请开发脚本定时分析 access.log 日志或网络连接数,PV 大于 100 的访问,封掉对应 IP。
16、请详细描述 netstat 网络连接状态的不同含义,以及如何针对每个状态进行优化?
在linux一般使用netstat 来查看系统端口使用情况步。
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的
netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。
该命令的一般格式为:
netstat [选项]
命令中各选项的含义如下:
-a 显示所有socket,包括正在监听的。
-c 每隔1秒就重新显示一遍,直到用户中断它。
-i 显示所有网络接口的信息,格式同“ifconfig -e”。
-n 以网络IP地址代替名称,显示出网络连接情形。
-r 显示核心路由表,格式同“route -e”。
-t 显示TCP协议的连接情况。
-u 显示UDP协议的连接情况。
-v 显示正在进行的工作。
1. netstat -an | grep LISTEN
0.0.0.0的就是每个IP都有的服务,写明哪个IP的就是绑定那个IP的服务。
2. netstat -tln
用来查看linux的端口使用情况
3. /etc/init.d/vsftp start
是用来启动ftp端口~!
4. netstat
查看已经连接的服务端口(ESTABLISHED)
5. netstat -a
查看所有的服务端口(LISTEN,ESTABLISHED)
6. sudo netstat -ap
查看所有的服务端口并显示对应的服务程序名
7. nmap <扫描类型><扫描参数>
例如:
nmap localhost
nmap -p 1024-65535 localhost
nmap -PT 192.168.1.127-245
当我们使用 netstat -apn 查看网络连接的时候,会发现很多类似下面的内容:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 52 218.104.81.152:7710 211.100.39.250:29488 ESTABLISHED 6111/1
显示这台服务器开放了7710端口,那么这个端口属于哪个程序呢?我们可以使用 lsof -i :7710 命令来查询:
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 1990 root 3u IPv4 4836 TCP *:7710 (LISTEN) 54com.cn
这样,我们就知道了7710端口是属于sshd程序的。
17、如何实现 web 图片防盗?给出防盗原理及大概配置步骤。
前几天讲了《nginx下载防盗链》,今天继续说下图片防盗链. 他们两个使用的指令不同,前者使用secure link,并且需要程序配合,但是效果非常好;后者不需要程序配合,根据图片来源来实现,但是只能先限制基本的图片盗用,无法防止图片采集.
nginx referer指令简介
nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求.我们应该牢记,伪装Referer头部是非常简单的事情,所以这个模块只能用于阻止大部分非法请求.我们应该记住,有些合法的请求是不会带referer来源头部的,所以有时候不要拒绝来源头部(referer)为空的请求.
图片防盗链配置
1
2
3
4
5
6
7
|
location ~* \.(gif|jpg|png|bmp)$ {
valid_referers none blocked *.ttlsa.com server_names ~\.google\. ~\.baidu\.;
if ($invalid_referer) {
return 403;
#rewrite ^/ http://www.ttlsa.com/403.jpg;
}
}
|
以上所有来至ttlsa.com和域名中包含google和baidu的站点都可以访问到当前站点的图片,如果来源域名不在这个列表中,那么$invalid_referer等于1,在if语句中返回一个403给用户,这样用户便会看到一个403的页面,如果使用下面的rewrite,那么盗链的图片都会显示403.jpg。如果用户直接在浏览器输入你的图片地址,那么图片显示正常,因为它符合none这个规则.
nginx防盗链指令
语法: referer_hash_bucket_size size;
默认值: referer_hash_bucket_size 64;
配置段: server, location
这个指令在nginx 1.0.5中开始出现.
Sets the bucket size for the valid referers hash tables. The details of setting up hash tables are provided in a separate document.
语法: referer_hash_max_size size;
默认值: referer_hash_max_size 2048;
配置段: server, location
这个指令在nginx 1.0.5中开始出现.
Sets the maximum size of the valid referers hash tables. The details of setting up hash tables are provided in a separate document.
语法: valid_referers none | blocked | server_names | string ...;
默认值: —
配置段: server, location
指定合法的来源'referer', 他决定了内置变量$invalid_referer的值,如果referer头部包含在这个合法网址里面,这个变量被设置为0,否则设置为1.记住,不区分大小写的.
参数说明
none
“Referer” 来源头部为空的情况
blocked
“Referer”来源头部不为空,但是里面的值被代理或者防火墙删除了,这些值都不以http://或者https://开头.
server_names
“Referer”来源头部包含当前的server_names(当前域名)
arbitrary string
任意字符串,定义服务器名或者可选的URI前缀.主机名可以使用*开头或者结尾,在检测来源头部这个过程中,来源域名中的主机端口将会被忽略掉
regular expression
正则表达式,~表示排除https://或http://开头的字符
18、请问你的网站主营业务是什么,并发量,日 PV,IP 量分别是多少?
19、请随意写一个你工作中完成任务最得意的 SHELL 脚本的例子。