Linux常见面试题,应对面试分享(上)

简介: Linux常见面试题,应对面试分享(上)

操作系统基础



1.cpu占⽤率太⾼了怎么办? 排查思路是什么,怎么定位这个问题,处理流程


其他程序:

1.通过top命令按照CPU使⽤率排序找出占⽤资源最⾼的进程

2.lsof查看这个进程在使⽤什么⽂件或者有哪些线程

3.询问开发或者⽼⼤,是什么业务在使⽤这个进程

4.是否可以将这台机器隔离,不影响其他业务

5.然后经过同意后可以杀死或重启进程,然后再观察


2.top⻚⾯中怎么排序能快速看到进程使⽤cpu最⾼


top

-P


3.HTTP常⻅状态码有哪些?


200 正常

301 永久跳转

302 临时跳转

403 拒绝访问 ⽬录没权限 没有⾸⻚

404 ⻚⾯没找到

500 反向代理后端没有可以响应的服务器

502 反向代理后端没有可以响应的服务器

503 反向代理后端没有可以响应的服务器


4.服务的常⽤端⼝有哪些?


SSH 22

HTTP 80

Nginx 80 1.16.0

HTTPS 443

MySQL 3306 5.7

Redis 6379 5.0

Mongo 27017 4.0

Elasticsearch 9200 9300 7.9

Kibana 5601 7.9

Tomcat 8080 8


5.cpu、内存、流量、⽂件连接数等查询命令


CPU: top uptime

内存: free -h

流量: iftop

磁盘: df -h fdisk -l iotop

⽹络: netstat -lnatup


6.查看进程打开⽂件


ps

-ef #查看进程信息

lsof

-c #显示指定程序名所打开的⽂件

-i #显示符合条件的进程,IPv[46][proto][@host|addr

[:svc_list|port_list]

-p #显示指定进程pid所打开的⽂件

-u #显示指定⽤户UID的进程

+d #列出⽬录下被打开的⽂件

+D #递归累出⽬录下被打开的⽂件


7.实时显示⽹络流量


iftop

-i

-n

-t


8.删除⽂件后磁盘空间不释放


⽂件删了,但是还有进程在使⽤这个⽂件,所以需要终⽌被占⽤的进程.


9./proc⽬录都有什么内容


/proc/cpuinfo #当前CPU信息

/proc/meminfo #当前内存信息

/proc/loadavg #当前系统平均负载信息

/proc/mounts #当前设备挂载表信息


10.raid0 raid1 raid5 raid10 的区别


RAID0

最少1块

容量是所有磁盘加起来的容量

速度最快

安全性最低

RAID1

最少2块

容量是所有磁盘的⼀半

速度⼀般

安全性⾼

RAID5

最少3块

容量是所有磁盘减1块

速度⼀般

安全性较⾼

RAID10

最少4块

容量是所有磁盘⼀半

速度较快

安全性最⾼


11.shell写过什么脚本


思路:

1.先想好功能

2.有能⼒的直接写函数,先写函数名,但是不要写内容

3.最后在填充函数⾥的内容

参考:

#1.拉取代码
git_pull(){
git pull xxxxx
}

#2.构建镜像

docker_build(){
docker build -t
}

#3.上传harbor

docker_push(){
docker push xxxxx
}

#4.远程替换镜像

docker_deploy(){
for i in ip
do
ssh $i docker pull xxxx &&
docker stop app &&
docker rm app &&
docker run --name app -it xx -d xxxxx
done
}

#5.主函数

main(){
git_pull
docker_build
docker_push
docker_deploy
}
main


12.如何查看⼀个进程的端⼝?


netstat -lnatup|grep nginx


13.如何查看当前系统磁盘使⽤量?


df -h


14.给你200台服务器如何规划?


物理服务器:

1.使⽤kickstart+cobbler⾃动化批量装机安装操作系统

2.明确并规划好服务器运⾏的服务

3.编写shell脚本批量⾃动分发SSH密钥

4.使⽤ansible⻆⾊批量安装服务

5.使⽤ansible批量安装监控组件

云服务器:

1.因为云服务器不需要装系统

2.编写shell脚本批量⾃动分发SSH密钥

3.使⽤ansible⻆⾊批量安装服务


15.你们公司服务器的配置是什么?


node节点:

16C 32G

系统盘RAID1 1T SATA

数据盘SSD 500G

不做RAID

数据库:

16C 64G

系统盘RAID1 1T SATA

数据盘RAID10 2T SSD 4块

代码上线:

8C 16G

系统盘RAID1 1T SATA

数据盘RAID10 1T SATA 4块

prometheus:

8C 16G

系统盘RAID1 1T SATA

数据盘RAID10 1T SATA 4块


16.AWK提取⽇志信息,最⾼的IP,排名前10的IP


awk '{nums[$1]+=1;} END{for(i in nums){print nums[i],i}}' access_log | sort | tail


17.编写脚本停⽌正在运⾏的程序


问开发这个程序的停⽌命令是什么?或者是否有停⽌的接⼝地址

停⽌之前确定还是否有其他的服务在使⽤这个程序

我的思路是⾸先⽤ps加grep查出这个进程号,然后使⽤kill 进程号命令结束进程

最后脚本检查程序是否安全退出,然后给出⼀个状态码

kill $(ps -ef|grep nginx|awk ‘{print $2}’)


web服务



1.HTTP常⽤状态码有哪些?分别代表什么意思?


200 正常

301 永久跳转

302 临时跳转

403 拒绝访问 ⽬录没权限 没有⾸⻚

404 ⻚⾯没找到

499 数据库没有响应超时

500 反向代理后端没有可以响应的服务器

502 反向代理后端没有可以响应的服务器

503 反向代理后端没有可以响应的服务器


2.如何保证反向代理服务器的⾼可⽤?


使⽤keepalived的VIP保证⾼可⽤


3.常⽤服务的端⼝ http https ssh mysql redis mongo elasticsearch


http 80

https 443

ssh 22

mysql 3306

redis 6379

mongo 27017

elasticsearch 9200


4.⽤过哪些web服务组件?


nginx

haproxy

tomcat


5.Nginx⽤过哪些模块?作⽤是什么?


ngx_http_core_module 核⼼模块 localtion

ngx_http_rewrite_module 重写模块

ngx_http_proxy_module 反向代理

ngx_http_upstream_module 负载均衡

ngx_http_autoindex_module 索引模块

ngx_http_stub_status_module 状态监控

ngx_http_access_module ⽩名单⿊名单

ngx_http_auth_basic_module 简单认证

ngx_http_limit_req_module 请求限速


6.Nginx如何实现反向代理?反向代理和负载均衡什么关系?


⾸先使⽤反向代理模块将请求发送到后端服务器地址池

然后使⽤负载均衡模块将流量平均负载到后端服务器

通过反向代理实现了流量平均负载到后端服务器


7.web⽹⻚访问慢如何排查?经典问题


现象:

⽤户反映打开⽹⻚速度慢

思路:

1.是某些⽤户慢,还是所有的⽤户都反映慢

2.打开监控,查看服务器内存/CPU/磁盘负载情况

3.打开ELK,查看关键连接的响应时间,是否能查看出规律,⽐如突然某个时间段升⾼,或者间歇性的

4.如果发现某个服务器负载变⾼,导致流量转发到这台服务器的时候慢,那么先把这台服务器从反向代理⾥摘掉,

然后在具体的分析排查问题.

5.如果web服务器负载正常,但是访问慢,那么⼜可能是数据库响应不了或者负载变⾼.

6.通过分析⽇志发现,昨天正常,今天变慢,有可能是因为发布了新版本的代码,数据库语句有变化,可能导致索引

失效

7.查看数据库是否存在慢语句,是否有语句执⾏卡死被锁

8.通过分析慢语句的执⾏计划查看语句是否⾛索引,如果没做索引,可能是因为开发发版了新代码,数据库语句有

变化,可能导致索引失效

9.将执⾏分析结果汇报给⽼⼤,决定是否建⽴合适的索引或者回滚⽼版本,然后再分析问题

10.CDN缓存失效导致请求转发了服务器上

11.DNS解析是否有问题


8.Nginx⽇志怎么处理?多久切割⼀次?


使⽤logrotate定期滚动切割⽇志,每天切割⼀次

我们使⽤了ELK⽇志收集分析平台


9.你们公司并发量有多⼤?PV多少?


PV ⻚⾯访问量 30万-50万 – 150万/天 100M 公⽹带宽 CDN分布式缓存

UV 独⽴访问量 运营那边才能看


10.nginx七层和四层代理的区别


四层代理解析的是端⼝号

七层代理解析的是http的报⽂

四层代理应⽤场景是⾼速转发,不解析http

七层代理的应⽤场景根据解析的域名匹配转发到后端合适的服务器


11.Nginx怎么限流


根据每个IP的请求数基于请求限速模块进⾏限制


12.Nginx有哪些负载均衡算法?


RR 平均轮询

权重轮询

URL

IP_HASH


相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
SQL 存储 Oracle
Oracle 面试题及答案整理,最新面试题
Oracle 面试题及答案整理,最新面试题
89 0
|
2月前
|
消息中间件 存储 负载均衡
RocketMQ 面试题及答案整理,最新面试题
RocketMQ 面试题及答案整理,最新面试题
168 4
|
2月前
|
消息中间件 存储 监控
RabbitMQ 面试题及答案整理,最新面试题
RabbitMQ 面试题及答案整理,最新面试题
119 1
|
2月前
|
消息中间件 存储 监控
Kafka 面试题及答案整理,最新面试题
Kafka 面试题及答案整理,最新面试题
152 3
|
5天前
|
存储 缓存 安全
Linux系统内核面试题
Linux系统内核面试题
22 3
|
14天前
|
运维 监控 Unix
【专栏】Linux系统管理员面试中的常见问题,涵盖基础知识、系统管理和故障排查。
【4月更文挑战第28天】本文概述了Linux系统管理员面试中的常见问题,涵盖基础知识、系统管理和故障排查。面试官会询问Linux与Unix的关系、内核功能、文件系统类型、权限位、用户组概念、链接类型、输入输出、进程和环境变量等。此外,还会涉及软件安装、服务配置、日志监控、网络管理、防火墙配置、LVM、RAID、用户管理、备份策略等实践技能。故障排查和脚本编程能力也是重点,包括系统故障分析、脚本在系统管理中的应用、磁盘空间管理、服务故障诊断及性能优化。准备面试的求职者应注重理论与实践经验的结合,持续学习以提升专业能力。
|
27天前
|
Linux Go
Linux命令Top 100驱动人生! 面试必备
探索Linux命令不再迷茫!本文分10部分详解20个基础命令,带你由浅入深掌握文件、目录管理和文本处理。 [1]: <https://cloud.tencent.com/developer/article/2396114> [2]: <https://pan.quark.cn/s/865a0bbd5720> [3]: <https://yv4kfv1n3j.feishu.cn/docx/MRyxdaqz8ow5RjxyL1ucrvOYnnH>
79 0
|
1月前
|
存储 缓存 安全
兄弟面试了百度,面试题分享一波
兄弟面试了百度,面试题分享一波
44 0
|
2月前
|
缓存 运维 算法
【Linux Shell 面试题 】Linux下如何 查看CPU信息
【Linux Shell 面试题 】Linux下如何 查看CPU信息
32 0
|
2月前
|
SQL 监控 大数据
DataGrip 面试题及答案整理,最新面试题
DataGrip 面试题及答案整理,最新面试题
74 0