《JAVA面经实录》- Nginx 和 Linux 面试题
本文整理Nginx和Linux面试中最常考的题目,覆盖基础认知、核心原理、实战操作、性能优化及问题排查,每道题均提供面试标准回答+补充考点,适配初级到中级后端、运维岗位面试,可直接用于备考。
一、Nginx 高频面试题
1. 什么是Nginx?它的核心作用是什么?
面试标准回答
Nginx(发音engine x)是一款开源的高性能HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器,由俄罗斯程序员Igor Sysoev开发,核心优势是高并发、低内存占用、高稳定性。
Nginx的核心作用主要有4点:
反向代理:隐藏后端服务器IP,接收客户端请求,转发到后端应用服务器(如Tomcat、SpringBoot),实现请求分发和负载均衡;
负载均衡:将客户端请求均匀分发到多个后端服务器,提高系统并发处理能力,避免单点故障;
静态资源服务器:直接处理HTML、CSS、JS、图片等静态资源,无需转发到后端,提升资源访问速度;
正向代理:代理客户端访问外部资源(如翻墙代理),但实际开发中较少用,核心场景还是反向代理。
面试补充
Nginx的核心优势:采用事件驱动模型(epoll),支持百万级TCP连接,内存占用极低(单进程占用几M到几十M内存),稳定性强,可7×24小时不间断运行,且配置简单、扩展性强(支持插件)。
2. Nginx 反向代理和正向代理的区别?
面试标准回答
核心区别:代理的对象不同,正向代理代理客户端,反向代理代理后端服务器,具体对比如下:
对比维度 | 正向代理 | 反向代理 |
|---|---|---|
代理对象 | 代理客户端(用户) | 代理后端服务器(如Tomcat) |
客户端感知 | 客户端知道代理的存在,需手动配置代理地址 | 客户端不知道代理的存在,只知道Nginx的地址,以为直接访问后端服务器 |
核心作用 | 突破网络限制(如翻墙)、隐藏客户端IP | 负载均衡、隐藏后端服务器IP、保护后端服务器、处理静态资源 |
典型场景 | 客户端通过代理访问外网 | 网站集群(多台Tomcat部署,Nginx分发请求) |
3. Nginx 负载均衡的常用策略有哪些?
面试标准回答
Nginx默认支持多种负载均衡策略,可根据业务需求配置,核心常用的有5种,其中轮询、权重、IP哈希是最常用的:
轮询(默认):将客户端请求依次分发到后端每台服务器,适用于后端服务器性能一致的场景,优点是配置简单,缺点是无法根据服务器负载动态调整。
权重(weight):给后端服务器分配不同的权重值(weight值越大,被分配到请求的概率越高),适用于后端服务器性能不一致的场景(如服务器配置不同),例如: upstream backend { server 192.168.1.100 weight=5; # 权重5,被分配概率最高 server 192.168.1.101 weight=3; # 权重3 server 192.168.1.102; # 默认权重1 }
IP哈希(ip_hash):根据客户端IP地址进行哈希计算,将同一个IP的请求始终分发到同一台后端服务器,适用于需要会话保持的场景(如用户登录后,后续请求需访问同一台服务器获取会话),优点是会话稳定,缺点是可能导致负载不均。
最少连接(least_conn):将请求分发到当前连接数最少的后端服务器,适用于后端服务器负载波动较大的场景,能动态调整负载分配。
URL哈希(url_hash):根据请求的URL进行哈希计算,将相同URL的请求分发到同一台服务器,适用于静态资源缓存场景(如同一图片请求,始终访问同一台服务器,利用缓存提升速度),需安装第三方模块。
面试补充
负载均衡的健康检查:Nginx可通过proxy_next_upstream配置,当后端某台服务器故障时,自动将请求转发到其他正常服务器,实现故障转移,提升系统可用性。
4. Nginx 的核心配置文件结构是什么?
面试标准回答
Nginx的核心配置文件是nginx.conf,整体结构分为3个主要部分,自上而下依次是:
全局块(main):配置Nginx全局参数,作用于整个Nginx服务,例如:
worker_processes 4; # 工作进程数,建议设置为CPU核心数 error_log /var/log/nginx/error.log; # 错误日志路径 pid /var/run/nginx.pid; # Nginx进程PID文件路径核心参数:worker_processes(工作进程数,直接影响并发能力)、error_log(错误日志)、pid(进程ID文件)。
events块:配置Nginx的事件驱动模型,影响Nginx与客户端的网络连接,例如:
events { worker_connections 10240; # 每个工作进程最大连接数 use epoll; # 启用epoll事件模型(Linux系统推荐,高性能) }核心参数:
worker_connections(单个worker进程的最大连接数,总并发≈worker_processes×worker_connections)、
use epoll(事件模型,epoll是Linux下最高效的事件模型)。http块:Nginx的核心配置块,包含HTTP协议相关的配置,可嵌套多个server块(虚拟主机),例如:
http { include /etc/nginx/mime.types; # 引入MIME类型配置 default_type application/octet-stream; # 默认MIME类型 # 日志配置 log_format main '$remote_addr [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; # 访问日志路径 # 负载均衡配置(upstream块,可嵌套在http块中) upstream backend { server 192.168.1.100; server 192.168.1.101; } # 虚拟主机配置(server块,每个server对应一个域名) server { listen 80; # 监听端口 server_name www.example.com; # 域名 # 反向代理配置 location / { proxy_pass http://backend; # 转发到负载均衡集群 proxy_set_header Host $host; # 传递客户端Host头 proxy_set_header X-Real-IP $remote_addr; # 传递客户端真实IP } # 静态资源配置 location ~* \.(html|css|js|png|jpg)$ { root /usr/share/nginx/html; # 静态资源根目录 expires 7d; # 静态资源缓存7天 } } }核心子块:upstream(负载均衡集群配置)、server(虚拟主机配置)、location(请求匹配规则配置)。
面试补充
location匹配规则优先级:精确匹配(=)> 前缀匹配(^~)> 正则匹配(~、~*)> 普通前缀匹配;其中~区分大小写,~*不区分大小写。
5. Nginx 如何处理静态资源?为什么处理静态资源效率高?
面试标准回答
Nginx处理静态资源的核心配置的是location块,通过匹配静态资源后缀(如.html、.css、.png),直接读取服务器本地的静态文件,无需转发到后端应用服务器,具体配置如下:
Nginx处理静态资源效率高的核心原因有3点:
采用事件驱动模型(epoll):非阻塞IO,单个worker进程可同时处理大量连接,无需为每个连接创建新进程/线程,减少资源开销;
内存映射(mmap):Nginx将静态文件映射到内存中,读取文件时直接从内存读取,无需频繁操作磁盘,提升读取速度;
优化配置支持:支持gzip压缩、浏览器缓存(expires、ETag)、连接复用,进一步减少网络传输量和资源重复请求。
6. Nginx 如何实现高可用?(避免单点故障)
面试标准回答
Nginx作为核心入口,单点故障会导致整个系统不可用,实现高可用的核心方案是主从架构(一主一从/一主多从)+ Keepalived,原理是:部署两台及以上Nginx服务器,一台为主服务器(Master),其余为从服务器(Slave),通过Keepalived监测Nginx状态,当主服务器故障时,自动将虚拟IP(VIP)切换到从服务器,确保服务不中断。
核心实现步骤:
部署两台Nginx服务器(主:192.168.1.100,从:192.168.1.101),配置相同的Nginx反向代理、负载均衡规则;
两台服务器均安装Keepalived,配置虚拟IP(如192.168.1.200),主服务器优先级高于从服务器;
Keepalived通过心跳检测(默认每2秒检测一次)监测主服务器的Nginx状态,若主服务器Nginx停止运行(或服务器宕机),Keepalived自动将虚拟IP切换到从服务器;
客户端通过虚拟IP(192.168.1.200)访问服务,无需关心主从切换,实现高可用。
面试补充
补充配置:在Keepalived配置中,可添加Nginx状态检测脚本,确保只有当Nginx真正故障时,才触发主从切换(避免因服务器网络波动导致误切换)。
7. Nginx 常见的优化策略有哪些?
面试标准回答
Nginx优化主要围绕“提升并发能力、减少资源开销、加快响应速度”,核心优化策略分为4类:
进程与连接数优化(全局块+events块):
worker_processes设置为CPU核心数(如4核CPU设置为4),充分利用CPU资源;
worker_connections提高到10240以上(根据服务器配置调整),增加单个worker进程的最大连接数;
开启worker_rlimit_nofile,提高进程最大打开文件数(避免文件描述符不足)。
静态资源优化(http块+location块):
开启gzip压缩(gzip on),压缩静态资源(HTML、CSS、JS),减小传输体积;
配置浏览器缓存(expires),设置静态资源缓存时间(如图片缓存7天,CSS/JS缓存30天);
开启ETag/Last-Modified,实现资源缓存校验,避免重复下载;
使用sendfile on,开启零拷贝(直接将文件从磁盘发送到网络,无需经过内存拷贝)。
反向代理优化(http块+location块):
配置proxy_buffer(代理缓冲区),减少后端服务器的IO压力;
开启proxy_connect_timeout、proxy_read_timeout,设置反向代理连接和读取超时时间;
传递客户端真实IP(proxy_set_header X-Real-IP $remote_addr),方便后端服务器日志排查。
日志与进程优化:
关闭不必要的日志(如静态资源访问日志),或简化日志格式,减少磁盘IO;
开启nginx进程守护(如通过systemd管理Nginx,确保进程异常退出后自动重启)。
8. Nginx 常见故障及排查方法?
面试标准回答
Nginx常见故障主要集中在“启动失败、请求异常、5xx错误”,核心排查思路:查看日志→检查配置→验证后端服务→检查网络,具体故障及排查方法如下:
故障1:Nginx启动失败
现象:执行
systemctl start nginx提示失败,或nginx -t提示配置错误;排查:① 执行
nginx -t检查配置文件语法(最常见原因:配置文件括号不匹配、参数错误);② 检查端口是否被占用(netstat -tulnp | grep 80),若80端口被其他服务占用,修改Nginx监听端口;③ 检查日志(/var/log/nginx/error.log),查看具体错误信息。
故障2:客户端访问报502 Bad Gateway
现象:客户端访问Nginx,提示502,说明Nginx转发请求到后端服务器失败;
排查:① 检查后端服务器是否正常运行(如Tomcat是否启动,
systemctl status tomcat);② 检查后端服务器端口是否可通(telnet 192.168.1.100 8080);③ 检查Nginx的upstream配置,确认后端服务器IP、端口正确;④ 查看Nginx错误日志,确认转发失败原因。
故障3:客户端访问报404 Not Found
现象:客户端访问静态资源或接口,提示404;
排查:① 访问静态资源:检查root配置的静态资源目录是否存在,文件路径是否正确;② 访问接口:检查location匹配规则是否正确,是否转发到正确的后端服务器;③ 检查后端接口是否存在,是否返回404。
故障4:Nginx并发量低、响应慢
现象:大量客户端访问时,响应延迟高,甚至出现超时;
排查:① 检查Nginx进程和连接数配置(worker_processes、worker_connections);② 检查后端服务器负载(
top命令查看CPU、内存占用);③ 检查静态资源是否开启gzip和缓存;④ 查看Nginx访问日志,分析高频请求,优化请求路径。
二、Linux 高频面试题
1. Linux 常用的文件系统有哪些?
面试标准回答
Linux文件系统是用于管理磁盘分区和文件的机制,常用的文件系统分为两类:本地文件系统和网络文件系统,核心常用的有:
ext4:最常用的本地文件系统,是ext3的升级版本,支持更大的文件和分区(最大单个文件16TB,最大分区1EB),支持日志功能(可恢复数据),稳定性高,适用于大多数Linux服务器(如CentOS 7默认文件系统)。
xfs:高性能文件系统,支持更大的文件和分区(最大单个文件8EB,最大分区16EB),读写速度快,适合大文件存储场景(如数据库、日志服务器),CentOS 8默认文件系统。
btrfs:新一代文件系统,支持快照、磁盘阵列、动态扩容等高级功能,适合需要数据备份和高可用性的场景,但稳定性不如ext4和xfs,目前使用较少。
tmpfs:临时文件系统,将文件存储在内存中,读写速度极快,但重启后数据丢失,适合存储临时文件(如/tmp目录)。
网络文件系统(NFS):用于跨服务器共享文件,客户端可通过网络访问远程服务器的文件系统,适用于多服务器共享数据的场景(如集群部署)。
面试补充
查看当前系统文件系统的命令:df -T(显示每个分区的文件系统类型);查看指定分区文件系统:blkid /dev/sda1。
2. Linux 常用的系统命令(按场景分类)
面试标准回答
Linux命令是运维和后端开发必备技能,按核心场景分类,常用命令:
(1).文件/目录操作命令:
1.ls:查看目录内容(ls -l:详细信息,ls -a:显示隐藏文件);
常用选项:
| 选项 | 说明 |
|---|---|
| -a | 查看当前目录下的文件,包括隐藏文件 |
| -l | 长格式显示文件 |
| -lh | 以方便阅读的长格式显示 |
2.cd:切换目录(cd /:切换到根目录,cd ~:切换到当前用户家目录);
常用选项:
| 命令 | 说明 |
|---|---|
| cd .. | 返回上一级目录 |
| cd ../.. | 返回上两级目录 |
| cd ~ | 切换到家目录 |
| cd / | 切换到根目录 |
| cd /home/lx/linux1/ | 绝对路径:从家目录出发,直到想要去的目录 |
| cd …/lx/ | 相对路径:从当前目录出发,直到想去的目录 |
3.pwd:查看当前工作目录路径;
4.mkdir:创建目录(mkdir -p:递归创建多级目录);
常用选项表:
| 选项 | 说明 |
|---|---|
| -p | 层级创建 |
| -v | 显示创建顺序 |
5.rm:删除文件/目录(rm -rf:强制删除,慎用);
常用选项表:
| 选项 | 说明 |
|---|---|
| -f | 强制删除 |
| -r | 多级删除 |
| -rf | 强制删除给定目录下所有文件和目录 |
rm 和 rmdir 的区别:
rm 有选项, rmdir 没有选项
rmdir 只能删除空目录,不能删文件
rm 带上选项-r可以删除非空目录
6.cp:复制文件/目录(cp -r:递归复制目录);
常用选项表:
| 选项 | 说明 |
|---|---|
| -f 或 --force | 强行复制文件或目录, 不论目的文件或目录是否已经存在 |
| -i 或 --interactive | 覆盖文件之前先询问用户 |
| -r | 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理 |
| -R 或 --recursive | 递归处理,将指定目录下的文件及子目录一并处理 |
7.mv:移动/重命名文件/目录;
常用选项:
| 选项 | 说明 |
|---|---|
| -f | force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖 |
| -i | 若目标文件 (destination) 已经存在时,就会询问是否覆盖 |
注意:
如果只移动不改名字,新名字可以不写。
如果移动的同时改名字,新名字一定要写。
8.touch:创建空文件。
(2).文件内容查看命令:
1.cat:查看文件全部内容(适合小文件);
常用选项表:
| 选项 | 说明 |
|---|---|
| -b | 对非空输出行编号 |
| -n | 对输出的所有行编号 |
| -s | 不输出多行空行 |
2.more:分页查看文件内容(按空格翻页,按q退出);
3.less:分页查看文件内容(支持上下翻页、搜索,按q退出);
4.tail:查看文件末尾内容(tail -f:实时监控文件变化,常用于查看日志);
常用选项:
| 选项 | 说明 |
|---|---|
| -f | 实时读取 |
| -1000 | 查看最近1000行日志 |
5.head:查看文件开头内容(head -n 10:查看前10行)。
6.grep:用于查找文件里符合条件的字符串。
| 选项 | 说明 |
|---|---|
| -a | 将binary文件以text文件的方式查找数据 |
| -c | 计算找到 ‘查找字符串’ 的次数 |
| -i | 忽略大小写的区别,即把大小写视为相同 |
| -v | 反向选择,即显示出没有 ‘查找字符串’ 内容的那一行 |
7.find:用来在指定目录下查找文件。
常用选项:
| 选项 | 说明 |
|---|---|
| -name test | 查询指定目录下,命名为test的文件 |
| -size +100k | 查询指定目录下,文件大于100K的文件 |
| -ctime n | 查询指定目录下,在过去n天内被修改过的文件 |
8.vi/vim:基本上 vi/vim 共分为三种模式。
8.1 命令模式(Command mode),
8.2 输入模式(Insert mode)和
8.3 底线命令模式(Lastline mode)。
常用的几个命令:
i 切换到输入模式,以输入字符。
: 切换到底线命令模式,以在最底一行输入命令。
ESC:退出输入模式,切换到命令模式
q 退出程序
w 保存文件
(3).系统状态查看命令:
1.top:实时查看系统CPU、内存、进程占用情况(按q退出);
2.free:查看系统内存使用情况(free -h:以人性化格式显示);
3.df:查看磁盘分区使用情况(df -h:人性化显示);
4.ps:查看系统进程(ps -ef:查看所有进程,ps -aux:查看进程详细信息);
常用选项:
| 选项 | 说明 |
|---|---|
| -A | 列出所有的进程 (重要) |
| -ef | 查看全格式的全部进程 (重要) |
| -w | 显示加宽可以显示较多的资讯 |
| -au | 显示较详细的资讯 |
| -aux | 显示所有包含其他使用者的行程 |
5.netstat:查看网络连接情况(netstat -tulnp:查看所有监听端口和对应进程),
netstat -anp | grep 端口号;
6.uptime:查看系统运行时间和负载情况。
(4).用户和权限操作命令:
1.useradd:创建用户(useradd test:创建test用户);
2.passwd:设置用户密码(passwd test:给test用户设置密码);
3.userdel:删除用户(userdel -r test:删除test用户及家目录);
4.chmod:修改文件/目录权限(chmod 755 file:给文件设置读、写、执行权限,所有者7,组用户5,其他用户5);
5.chown:修改文件/目录所有者和所属组(chown test:test file:将file的所有者和组改为test)。
(5).网络操作命令:
1.ping:测试网络连通性(ping 192.168.1.100:测试与该IP的连通性);
2.ifconfig:查看和配置网卡信息(CentOS 7也可用ip addr),用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户;
3.ssh:远程登录服务器(ssh user@ip:如ssh root@192.168.1.100);
4.scp:远程复制文件(scp localfile user@ip:remotePath:将本地文件复制到远程服务器)。
5.解压命令:
tar -zxvf redis-3.2.8.tar.gz ;解压到当前文件夹
tar -zxvf redis-3.2.8.tar.gz -C /opt/java/ ;-C指解压到指定目录
6.压缩命令:
tar -zcvf redis-3.2.8.tar.gz redis-3.2.8/ ;语法 tar -zcvf 压缩后的名称 要压缩的文件
tar -zcvf 压缩后的文件(可指定目录) 要压缩的文件(可指定目录)
7.遇到一个不认识的命令式怎么办?
(1).man 命令名
(2).命令名 – help
(3).info cat 命令名 (查看命令的功能,来源,选项等)
(4).whatis 命令名
(5).通过网络途径
8.kill:用于删除执行中的程序或工作,kill [选项]/[信号] 进程号。
常用选项:
| 选项 | 说明 |
|---|---|
| -l | force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖 |
| -s | 若目标文件 (destination) 已经存在时,就会询问是否覆盖 |
常用信号:
| 信号 | 说明 |
|---|---|
| -1(HUP) | 重新加载进程 |
| -9(KILL) | 杀死一个进程。(重点) |
| -15(TERM) | 正常停止一个进程。 |
3. Linux 权限管理(r、w、x 权限的含义)
面试标准回答
Linux是多用户、多任务操作系统,权限管理是核心,用于控制不同用户对文件/目录的访问权限,每个文件/目录都有3类权限(r:读、w:写、x:执行),分别对应3类用户(所有者、所属组、其他用户)。
1. 权限符号含义
r(读权限,数字4):
对文件:可查看文件内容(如cat、head命令);
对目录:可查看目录内的文件和目录列表(如ls命令)。
w(写权限,数字2):
对文件:可修改文件内容(如vi编辑)、删除文件;
对目录:可在目录内创建、删除、移动文件/目录(如mkdir、rm、mv命令)。
x(执行权限,数字1):
对文件:可执行该文件(如Shell脚本、可执行程序);
对目录:可进入该目录(如cd命令)。
2. 权限表示方式
权限有两种表示方式:符号表示和数字表示,例如rwxr-xr--:
符号表示:rwx(所有者权限)、r-x(所属组权限)、r--(其他用户权限);
数字表示:rwx=4+2+1=7,r-x=4+0+1=5,r--=4+0+0=4,所以数字表示为754。
3. 常用权限配置场景
文件权限755:所有者有读、写、执行权限,所属组和其他用户有读、执行权限(适合可执行程序、Shell脚本);
文件权限644:所有者有读、写权限,所属组和其他用户有读权限(适合普通文件、配置文件);
目录权限755:所有者有读、写、执行权限,所属组和其他用户有读、执行权限(适合普通目录);
目录权限777:所有用户都有读、写、执行权限(慎用,存在安全风险,适合临时共享目录)。
面试补充
特殊权限:SUID(让普通用户执行文件时拥有所有者权限,如passwd命令)、SGID(让用户执行文件时拥有所属组权限)、Sticky Bit(仅目录可用,让目录内的文件只能被所有者删除)。
4. Linux 进程管理(查看、终止、后台运行)
面试标准回答
Linux进程是程序的运行实例,进程管理核心是“查看进程、终止异常进程、后台运行进程”,常用命令和操作如下:
查看进程:
ps -ef:查看所有进程的详细信息(PID、PPID、所有者、进程名称等),PPID是父进程ID;ps -aux:查看所有进程的资源占用情况(CPU、内存占用率);top:实时查看进程资源占用,按P排序(CPU占用从高到低),按M排序(内存占用从高到低);pgrep 进程名:根据进程名查询进程PID(如pgrep nginx:查询nginx进程的PID)。
终止进程:
kill PID:发送默认信号(15)终止进程,适用于正常进程(如kill 1234:终止PID为1234的进程);kill -9 PID:发送强制终止信号(9),适用于异常卡死的进程(无法正常终止时使用,慎用,会导致进程资源无法释放);killall 进程名:根据进程名终止所有相关进程(如killall nginx:终止所有nginx进程)。
后台运行进程:
命令末尾加&:将进程后台运行(如
java -jar app.jar&),但关闭终端后进程会终止;nohup 命令&:后台运行进程,且关闭终端后进程仍继续运行(如nohup java -jar app.jar&),输出日志默认保存到nohup.out文件;jobs:查看当前终端后台运行的进程;fg 进程编号:将后台进程切换到前台(如fg 1:将编号为1的后台进程切换到前台)。
面试补充
进程状态:Linux进程有5种常见状态(通过ps命令查看STAT列):R(运行态)、S(睡眠态)、D(不可中断睡眠态)、Z(僵尸态)、T(停止态);其中僵尸态(Z)是进程已终止,但父进程未回收其资源,需终止父进程或重启系统解决。
5. Linux 磁盘管理(分区、格式化、挂载)
面试标准回答
Linux磁盘管理核心是“分区→格式化→挂载”,只有完成这三步,磁盘才能被系统识别和使用,具体操作流程如下:
步骤1:查看磁盘信息执行
fdisk -l,查看系统中所有磁盘和分区信息(如/dev/sda是第一块硬盘,/dev/sda1是第一块硬盘的第一个分区)。步骤2:磁盘分区使用
fdisk /dev/sda进入分区工具,执行以下操作:输入
n:创建新分区;选择分区类型(主分区p,扩展分区e),设置分区大小;
输入
w:保存分区设置,退出分区工具。
步骤3:格式化分区将分区格式化为指定的文件系统(如ext4、xfs),命令:
mkfs.ext4 /dev/sda2(将/dev/sda2分区格式化为ext4文件系统)。步骤4:挂载分区将格式化后的分区挂载到系统的某个目录(挂载点),才能访问分区内的文件:
临时挂载:
mount /dev/sda2 /mnt/data(将/dev/sda2挂载到/mnt/data目录),重启系统后挂载失效;永久挂载:编辑
/etc/fstab文件,添加一行配置(/dev/sda2 /mnt/data ext4 defaults 0 0),保存后执行mount -a,使配置生效,重启后仍保持挂载。
面试补充
常用磁盘相关命令:df -h(查看挂载分区使用情况)、du -sh 目录(查看目录占用磁盘空间大小)、mount(查看当前所有挂载信息)。
6. Linux 防火墙配置(CentOS 7/8)
面试标准回答
Linux防火墙用于控制网络访问,CentOS 7/8默认使用firewalld防火墙(替代了CentOS 6的iptables),核心操作包括“开启/关闭防火墙、开放端口、查看防火墙状态”,具体命令如下:
查看防火墙状态
systemctl status firewalld(active(running)表示开启,inactive(dead)表示关闭)。开启/关闭/重启防火墙
开启:
systemctl start firewalld;关闭:
systemctl stop firewalld(生产环境不建议关闭,可开放指定端口);重启:
systemctl restart firewalld;设置开机自启:
systemctl enable firewalld;关闭开机自启:
systemctl disable firewalld。
开放端口(常用)
临时开放端口(重启防火墙后失效):
firewall-cmd --add-port=80/tcp(开放80端口,tcp协议);永久开放端口:
firewall-cmd --add-port=80/tcp --permanent,开放后需重启防火墙(systemctl restart firewalld)生效;查看已开放端口:
firewall-cmd --list-ports;关闭开放的端口:
firewall-cmd --remove-port=80/tcp --permanent,重启防火墙生效。
开放服务(替代开放端口)例如开放ssh服务:
firewall-cmd --add-service=ssh --permanent,重启防火墙生效。
面试补充
若系统使用iptables防火墙(CentOS 6或手动安装),常用命令:service iptables start/stop/restart(开启/关闭/重启),iptables -A INPUT -p tcp --dport 80 -j ACCEPT(开放80端口)。
7. Linux 日志管理(常用日志路径及查看方法)
面试标准回答
Linux日志用于记录系统运行状态、服务运行情况、错误信息等,是排查故障的核心依据,常用日志路径和查看方法如下:
核心日志路径
/var/log/messages:系统核心日志,记录系统启动、内核、服务等所有重要信息,是排查系统故障的首选;/var/log/nginx/error.log:Nginx错误日志,记录Nginx启动、转发、访问过程中的错误信息;/var/log/nginx/access.log:Nginx访问日志,记录所有客户端访问Nginx的请求信息(IP、时间、请求路径、状态码等);/var/log/secure:安全日志,记录用户登录、sudo操作、ssh登录等安全相关信息(如密码错误、远程登录成功);/var/log/mysqld.log:MySQL日志,记录MySQL启动、运行、错误等信息(路径可能因MySQL配置不同而变化);/var/log/boot.log:系统启动日志,记录系统启动过程中的所有信息。
日志查看常用方法
实时监控日志:
tail -f /var/log/messages(实时查看系统日志变化);查看日志中包含指定关键词的内容:
grep "error" /var/log/nginx/error.log(查看Nginx错误日志中的error信息);查看指定时间范围内的日志:结合
grep和时间格式(如grep "2024-05-01" /var/log/access.log);查看日志最后100行:
tail -n 100 /var/log/messages。
面试补充
日志轮转:Linux通过logrotate工具实现日志轮转(将旧日志压缩、重命名,避免日志文件过大),配置文件路径:/etc/logrotate.conf(全局配置)、/etc/logrotate.d/(各服务单独配置,如nginx、mysql)。
8. Linux 远程登录方式及密钥登录配置
面试标准回答
Linux远程登录是运维和开发的常用操作,核心方式有“密码登录”和“密钥登录”,其中密钥登录更安全(避免密码泄露),是生产环境首选,具体配置和操作如下:
1. 密码登录(基础方式)通过ssh命令远程登录,命令:
ssh 用户名@服务器IP,例如ssh root@192.168.1.100,输入密码后即可登录;若服务器端口不是默认22,需指定端口:ssh -p 2222 root@192.168.1.100。2. 密钥登录(推荐,更安全)核心原理:客户端生成公钥和私钥,将公钥上传到远程服务器,登录时客户端用私钥验证,无需输入密码,具体配置步骤:
步骤1:客户端生成密钥对(Windows用Xshell、Putty,Linux/macOS用终端):
ssh-keygen -t rsa,按回车默认生成(密钥存储路径:~/.ssh/,id_rsa是私钥,id_rsa.pub是公钥),无需设置密码(若设置密码,登录时需输入密钥密码)。步骤2:将客户端公钥上传到远程服务器:
ssh-copy-id root@192.168.1.100,输入服务器密码,即可将公钥(id_rsa.pub)复制到服务器的~/.ssh/authorized_keys文件中。步骤3:测试密钥登录: 执行
ssh root@192.168.1.100,无需输入密码,直接登录成功。步骤4:优化安全(可选): 修改服务器ssh配置文件
/etc/ssh/sshd_config,禁用密码登录(PasswordAuthentication no),只允许密钥登录,重启ssh服务(systemctl restart sshd)生效,提升安全性。
面试补充
ssh配置文件核心参数:Port 22(ssh默认端口,可修改为其他端口提升安全性)、PermitRootLogin yes(允许root用户登录,可设置为no,禁止root直接登录)、AuthorizedKeysFile .ssh/authorized_keys(指定公钥存储文件)。
9. Linux 的目录结构是怎样的?
● /bin:存放二进制可执行文件(ls,cat,mkdir 等),常用命令一般都在这里;
● /boot:存放用于系统引导时使用的各种文件;
● /dev:用于存放设备文件;
● /etc:存放系统管理和配置文件;
● /home:存放所有用户文件的根目录,是用户主目录的基点,比如用户 user 的主目录就是/home/user,可以用~user 表示;
● /lib :存放着和系统运行相关的库文件 ;
● /lost+found:这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows 下叫什么.chk)就在这里。
● /mnt:系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
● /proc:虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
● /root:超级用户(系统管理员)的主目录(特权阶级 o);
● /sbin: 存放二进制可执行文件,只有 root 才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如 ifconfig 等;
● /tmp:用于存放各种临时文件,是公用的临时文件存储点;
● /usr:用于存放系统应用程序/opt:额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把 tomcat 等都安装到这里;
● /var:用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;