运维面试题整理

运维面试题整理文章目录原题前言1.Nginx反向代理配置,此类urlwww.abc.com/refuse,禁止访问,返回4032.如何使用iptables将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0:3.如何查看Linux系统当前的状态,cpu内存的使用情况及负载4.nginx如何重定义或者添加发往后端服务器的请求头5.编写shell脚本,将当前目录下大于10K的文件转移到/tmp目录下6.写出你所了解的门户网站的服务架构,可用什么方式实现的高可用、负

大家好,又见面了,我是你们的朋友全栈君。

原题

在这里插入图片描述
在这里插入图片描述

前言

1. Nginx反向代理配置,此类url www.abc.com/refuse,禁止访问,返回403

location /www.abc.com/refuse { 
    

    return 403;
}

2. 如何使用iptables将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0:

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to 192.168.16.1:80

3. 如何查看Linux系统当前的状态,cpu内存的使用情况及负载

系统 
# uname -a # 查看内核/操作系统/CPU信息 
# head -n 1 /etc/issue # 查看操作系统版本 
# cat /proc/cpuinfo # 查看CPU信息 
# hostname # 查看计算机名 
# lspci -tv # 列出所有PCI设备 
# lsusb -tv # 列出所有USB设备 
# lsmod # 列出加载的内核模块 
# env # 查看环境变量 
资源 
# free -m # 查看内存使用量和交换区使用量 
# df -h # 查看各分区使用情况 
# du -sh # 查看指定目录的大小 
# grep MemTotal /proc/meminfo # 查看内存总量 
# grep MemFree /proc/meminfo # 查看空闲内存量 
# uptime # 查看系统运行时间、用户数、负载 
# cat /proc/loadavg # 查看系统负载 

4. nginx如何重定义或者添加发往后端服务器的请求头

headers-more-nginx-module 模块用于添加,修改,或者清除 请求/响应头
  more_set_headers 用于添加、修改、清除响应头
    more_clear_headers 用于清除响应头
    more_set_input_headers 用于添加、修改、清除请求头
    more_clear_input_headers 用于清除请求头

5. 编写shell脚本,将当前目录下大于10K的文件转移到/tmp目录下

#!/bin/bash
for Filename in $(ls -l |awk '$5 > 10240 {print $9}')
do
mv $Filename /tmp
done

6. 写出你所了解的门户网站的服务架构,可用什么方式实现的高可用、负载均衡?

软负载: nginx+keepalived
lvs+keepalived 
应负载: F5

补充:

代理服务器一般使用nginx 作为反向代理
web服务器: 一般使用nginx
缓存服务器一般使用redis或者memcached
数据库服务器:一般使用mysql

常见的web集群:
apache+tomcat;nginx+tomcat;lvs+nginx+tomcat(lvs负责集群调度,nginx负责静态文件处理,tomcat负责动态文件)

LVS+keepalive 高可用。

7. nginx 日志过滤10点到12点之间访问IP排名和统计

nginx的日志格式如下图:
在这里插入图片描述

[root@zmedu-17 logs]# pwd
/usr/local/nginx/logs
[root@zmedu-17 logs]# ls
access.log  error.log  nginx.pid

[root@zmedu-17 logs]# cat access.log | grep "16/Jun/2020" | sed -n '/07:39:54/,/08:00:01/p' | awk '{print $1}' | sort | uniq -c | sort -t " " -k2 -n -r
      8 192.168.1.4

8. 在11月份内,每天的早上6点到12点,每隔2小时执行一次usr/bin/httpd.sh怎么实现

0 6-12/2 * 11 * /usr/bin/httpd.sh

9. 分布式文件存储是否有过了解和使用,了解过的有什么特性

FastDFS
 解决了大数据量的存储和负载均衡问题,特别适合中小文件为载体的在线服务,比如在线相册,视频网站等等。 网盘社区,广告和应用下载的存储。

补充:
单机时代:  在静态目录中存放文件资源。
优点:便利,项目直接引用目录,不需要复杂的技术
缺点: 如果作为前端网站使用,代码和文件耦合在一起,文件越多存放越混乱。如果流量大,静态文件访问会占用一定 的资源,影响业务的正常运行

独立文件服务器时代:
缺点:点击存在性能瓶颈,容灾,垂直扩展能力较差。
比如独立的图片服务器,项目上次文件的时候,通过ssh或者ftp上传到图片服务器的某个目录下,在通过nginx来访问此目录,返回一个独立域名的url地址。

分布式文件系统:
优点: 定时备份,如果一台down掉,迅速切换到另一台。扩展能力强,能够保证文件系统的可用性,也能够保证数据的完整性和唯一性

缺点: 系统复杂程度较高,需要更多服务器

常见的分布式文件系统还有: GlusterFS, GoogleFS, TFS, OSS

10. 使用netstat和awk命令统计下网络连接数:

[root@zmedu-17 ~]# netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'
ESTABLISHED      3

补充:
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉

11. 在linux下,假设nginx日志的路径为opt/logs/access.logs,日志不能自动分割,请写出一个简单的脚本,让日志每天能够定时自动分割

#! /bin/bash
base_path='/usr/local/nginx/logs'
log_path=$(date -d yesterday +"%Y%m")
minute=$(date -d "1 minute ago" +"%Y%m%d-%H:%M")
 
mkdir -p $base_path/$log_path
echo $base_path/access.log
mv $base_path/access.log $base_path/$log_path/access_$minute.log
echo $base_path/$log_path/access_$minite.log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

#crontab -l
* * 1 * * eck_nginx_log.sh

12. 写出raid的几种模式,以及他们的特点

raid  名称 特点

raid0 提高读写性能,最少两块容量为N的硬盘,容量为2N

raid1 提高数据安全性,提高读取性能,不能提高写入性能,2003自带raid1功能,最少两块容量为N的硬盘,容量为N

raid10 先提高安全性,再提高性能,最少4块容量为N的硬盘,容量为2N,RAID10比RAID01在安全性方面要强(体现在容错率上)

raid01 先提高性能,再提高安全性,最少4块容量为N的硬盘,容量为2N

raid5 提升安全性,安全性低于raid10(三块盘的情况下),大文件读写没有优势,小文件读写能力低于raid10,最低三块盘,容量为2快盘


13. 写一个脚本,查找15天前以png结尾的文件并删除

#!/bin/bash
find /picture/*.png* -type f  -mtime +15 -exec rm  { 
   } \;

14. 对于服务器的监控使用过哪类工具及其特点

zabbix, prometheus, cacti ,nagios

15. 作为运维工程师,你对该职位的认识和理解有哪些,日常工作中应该怎么做

做运维岗位带给你的改变: 
16.  可以认识更多的人,同时也能被更多的人认识, 对于一个喜欢沟通和交流的我来说,更能够在这个岗位上干的长久。
17.  运维人员临场应变能力和处理突发事件的能力会随着工作经验的增长而增强。更容易养成未雨绸缪,思维上得到锻炼,考虑问题更全面,细致,透彻,且内心承受能来强大
18. 运维能力不是高学历可以搞定的,需要的是勤奋努力,善于总结 

其次: 运维不是单纯的运维维护,而是运维规范和规则的制定者以及安全运维规范的忠实维护者和践行者。

在工作中应该做什么?
1. 监控,报警,线上部署
2. 脚本自动化,工具自动化
3. 故障处理

要弄懂底层原理,比如监控: 任何的监控都是: 收集数据,存储数据,数据分析,数据指标展示,告警五个部分。理解了这个,对于任何监控你可以去分析,哪个模块是在分析数据,哪个模块是在收集数据,能不能用其他的代替。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131919.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • D3js快速入门——用最新版D3js实现树图

    D3js快速入门——用最新版D3js实现树图文章目录 引言 1 D3js 是什么 2 D3js 相对其他数据可视化方案的优势 2 1SVG 对比 Canvas2 2D3 js 对比 Echarts3 怎么用 D3 js 开发一个树图 3 1 前置基础 3 2d3 开发树图流程 3 3 动手实现一个树图 3 3 1 普通 tidetree3 3 2 你的树图不简单 radiotidetre 3 3 更多可能 更多类型的树图引言上周我们组新开项目 技术调研之后决定使用 d3 js 做数据可视化开发 mentor 让我来做初期技术调研 之后的技

    2025年10月24日
    4
  • 整理:Visual Studio Code (vscode) 配置C、C++环境/编写运行C、C++(主要Windows、简要Linux)

    现在是2019.7.21,由于这阵一直在忙,今天我用最新的VSCode(Version1.36.1)和最新的Cpp插件(version0.24.0)按照本文的安装步骤从零开始试了一下,由于vscode版本和cpp插件版本更新确实变化了很多,2019年7月21日更新的我会用这个颜色(粉色?)标示出来,供大家参考进行配置。也可以参考官方文档:https://code.visualstudio.c…

    2022年4月7日
    36
  • 获取apk签名

    获取apk签名Apk签名相关方法一1.解压apk2.在META_INF目录下找到xxx.RSA文件3.执行keytool-printcert-filexxxx.RSA目录方法二keytool-list-v-keystorexxxx.keystore-storepass签名文件密码debug签名密码默认为android…

    2022年5月4日
    43
  • SCTP标准简介Part I:SCTP连接建立

    SCTP标准简介Part I:SCTP连接建立SCTP 协议最新版本是 RFC4960 以下简单介绍 SCTP 标准中的一些基本概念 希望对大家阅读 SCTP 相关标准时有所帮助 详细资料可以参考 RFC 水平所限 有错漏之处请见谅 1 SCTP 包的格式 nbsp 0 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 1 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 2 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 3 nbsp nbsp nbsp 02

    2026年1月14日
    1
  • python中lb_python pdfminer

    python中lb_python pdfminer1.准备LMDB和SQLite/MySQL等关系型数据库不同,属于key-value数据库(把LMDB想成dict会比较容易理解),键key与值value都是字符串。安装:pipinstalllmdb使用时importlmdb。2.操作流程概况地讲,操作LMDB的流程是:通过env=lmdb.open()打开环境通过txn=env.begin()建立事务通过txn.put(k

    2022年9月29日
    4
  • 数据库的简单建模

    数据库的简单建模本文关键字 数据库 建模 概念模型 逻辑模型 物理模型 使用数据库时 通常是为了支撑一个应用或一个业务场景 第一步需要做的就是要对数据库的表结构进行设计 一个完善的设计方案包括 表名 列名 数据类型 备注信息 字符编码 主键设计 表间关系 其他约束条件等 其中的难点在于如何使用数据表以及表间关系来描述出相应的功能场景 能够应对以后的各种查询需要 这对刚接触数据库的使用者来说是有些困难的 但是只要认真思考 按照步骤来操作相信最后的结果不会差

    2025年11月13日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号