当前位置: 首页 > news >正文

《JAVA面经实录》- Nginx 和 Linux 面试题

《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哈希是最常用的:

  1. 轮询(默认):将客户端请求依次分发到后端每台服务器,适用于后端服务器性能一致的场景,优点是配置简单,缺点是无法根据服务器负载动态调整。

  2. 权重(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 }

  3. IP哈希(ip_hash):根据客户端IP地址进行哈希计算,将同一个IP的请求始终分发到同一台后端服务器,适用于需要会话保持的场景(如用户登录后,后续请求需访问同一台服务器获取会话),优点是会话稳定,缺点是可能导致负载不均。

  4. 最少连接(least_conn):将请求分发到当前连接数最少的后端服务器,适用于后端服务器负载波动较大的场景,能动态调整负载分配。

  5. URL哈希(url_hash):根据请求的URL进行哈希计算,将相同URL的请求分发到同一台服务器,适用于静态资源缓存场景(如同一图片请求,始终访问同一台服务器,利用缓存提升速度),需安装第三方模块。

面试补充

负载均衡的健康检查:Nginx可通过proxy_next_upstream配置,当后端某台服务器故障时,自动将请求转发到其他正常服务器,实现故障转移,提升系统可用性。

4. Nginx 的核心配置文件结构是什么?

面试标准回答

Nginx的核心配置文件是nginx.conf,整体结构分为3个主要部分,自上而下依次是:

  1. 全局块(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文件)。

  2. events块:配置Nginx的事件驱动模型,影响Nginx与客户端的网络连接,例如:

    events { worker_connections 10240; # 每个工作进程最大连接数 use epoll; # 启用epoll事件模型(Linux系统推荐,高性能) }

    核心参数:
    worker_connections(单个worker进程的最大连接数,总并发≈worker_processes×worker_connections)、
    use epoll(事件模型,epoll是Linux下最高效的事件模型)。

  3. 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)切换到从服务器,确保服务不中断。

核心实现步骤:

  1. 部署两台Nginx服务器(主:192.168.1.100,从:192.168.1.101),配置相同的Nginx反向代理、负载均衡规则;

  2. 两台服务器均安装Keepalived,配置虚拟IP(如192.168.1.200),主服务器优先级高于从服务器;

  3. Keepalived通过心跳检测(默认每2秒检测一次)监测主服务器的Nginx状态,若主服务器Nginx停止运行(或服务器宕机),Keepalived自动将虚拟IP切换到从服务器;

  4. 客户端通过虚拟IP(192.168.1.200)访问服务,无需关心主从切换,实现高可用。

面试补充

补充配置:在Keepalived配置中,可添加Nginx状态检测脚本,确保只有当Nginx真正故障时,才触发主从切换(避免因服务器网络波动导致误切换)。

7. Nginx 常见的优化策略有哪些?

面试标准回答

Nginx优化主要围绕“提升并发能力、减少资源开销、加快响应速度”,核心优化策略分为4类:

  1. 进程与连接数优化(全局块+events块)

    1. worker_processes设置为CPU核心数(如4核CPU设置为4),充分利用CPU资源;

    2. worker_connections提高到10240以上(根据服务器配置调整),增加单个worker进程的最大连接数;

    3. 开启worker_rlimit_nofile,提高进程最大打开文件数(避免文件描述符不足)。

  2. 静态资源优化(http块+location块)

    1. 开启gzip压缩(gzip on),压缩静态资源(HTML、CSS、JS),减小传输体积;

    2. 配置浏览器缓存(expires),设置静态资源缓存时间(如图片缓存7天,CSS/JS缓存30天);

    3. 开启ETag/Last-Modified,实现资源缓存校验,避免重复下载;

    4. 使用sendfile on,开启零拷贝(直接将文件从磁盘发送到网络,无需经过内存拷贝)。

  3. 反向代理优化(http块+location块)

    1. 配置proxy_buffer(代理缓冲区),减少后端服务器的IO压力;

    2. 开启proxy_connect_timeout、proxy_read_timeout,设置反向代理连接和读取超时时间;

    3. 传递客户端真实IP(proxy_set_header X-Real-IP $remote_addr),方便后端服务器日志排查。

  4. 日志与进程优化

    1. 关闭不必要的日志(如静态资源访问日志),或简化日志格式,减少磁盘IO;

    2. 开启nginx进程守护(如通过systemd管理Nginx,确保进程异常退出后自动重启)。

8. Nginx 常见故障及排查方法?

面试标准回答

Nginx常见故障主要集中在“启动失败、请求异常、5xx错误”,核心排查思路:查看日志→检查配置→验证后端服务→检查网络,具体故障及排查方法如下:

  1. 故障1:Nginx启动失败

    1. 现象:执行systemctl start nginx提示失败,或nginx -t提示配置错误;

    2. 排查:① 执行nginx -t检查配置文件语法(最常见原因:配置文件括号不匹配、参数错误);② 检查端口是否被占用(netstat -tulnp | grep 80),若80端口被其他服务占用,修改Nginx监听端口;③ 检查日志(/var/log/nginx/error.log),查看具体错误信息。

  2. 故障2:客户端访问报502 Bad Gateway

    1. 现象:客户端访问Nginx,提示502,说明Nginx转发请求到后端服务器失败;

    2. 排查:① 检查后端服务器是否正常运行(如Tomcat是否启动,systemctl status tomcat);② 检查后端服务器端口是否可通(telnet 192.168.1.100 8080);③ 检查Nginx的upstream配置,确认后端服务器IP、端口正确;④ 查看Nginx错误日志,确认转发失败原因。

  3. 故障3:客户端访问报404 Not Found

    1. 现象:客户端访问静态资源或接口,提示404;

    2. 排查:① 访问静态资源:检查root配置的静态资源目录是否存在,文件路径是否正确;② 访问接口:检查location匹配规则是否正确,是否转发到正确的后端服务器;③ 检查后端接口是否存在,是否返回404。

  4. 故障4:Nginx并发量低、响应慢

    1. 现象:大量客户端访问时,响应延迟高,甚至出现超时;

    2. 排查:① 检查Nginx进程和连接数配置(worker_processes、worker_connections);② 检查后端服务器负载(top命令查看CPU、内存占用);③ 检查静态资源是否开启gzip和缓存;④ 查看Nginx访问日志,分析高频请求,优化请求路径。

二、Linux 高频面试题

1. Linux 常用的文件系统有哪些?

面试标准回答

Linux文件系统是用于管理磁盘分区和文件的机制,常用的文件系统分为两类:本地文件系统和网络文件系统,核心常用的有:

  1. ext4:最常用的本地文件系统,是ext3的升级版本,支持更大的文件和分区(最大单个文件16TB,最大分区1EB),支持日志功能(可恢复数据),稳定性高,适用于大多数Linux服务器(如CentOS 7默认文件系统)。

  2. xfs:高性能文件系统,支持更大的文件和分区(最大单个文件8EB,最大分区16EB),读写速度快,适合大文件存储场景(如数据库、日志服务器),CentOS 8默认文件系统。

  3. btrfs:新一代文件系统,支持快照、磁盘阵列、动态扩容等高级功能,适合需要数据备份和高可用性的场景,但稳定性不如ext4和xfs,目前使用较少。

  4. tmpfs:临时文件系统,将文件存储在内存中,读写速度极快,但重启后数据丢失,适合存储临时文件(如/tmp目录)。

  5. 网络文件系统(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:移动/重命名文件/目录;

常用选项:

选项说明
-fforce 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-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 [选项]/[信号] 进程号。

常用选项:

选项说明
-lforce 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-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进程是程序的运行实例,进程管理核心是“查看进程、终止异常进程、后台运行进程”,常用命令和操作如下:

  1. 查看进程

    1. ps -ef:查看所有进程的详细信息(PID、PPID、所有者、进程名称等),PPID是父进程ID;

    2. ps -aux:查看所有进程的资源占用情况(CPU、内存占用率);

    3. top:实时查看进程资源占用,按P排序(CPU占用从高到低),按M排序(内存占用从高到低);

    4. pgrep 进程名:根据进程名查询进程PID(如pgrep nginx:查询nginx进程的PID)。

  2. 终止进程

    1. kill PID:发送默认信号(15)终止进程,适用于正常进程(如kill 1234:终止PID为1234的进程);

    2. kill -9 PID:发送强制终止信号(9),适用于异常卡死的进程(无法正常终止时使用,慎用,会导致进程资源无法释放);

    3. killall 进程名:根据进程名终止所有相关进程(如killall nginx:终止所有nginx进程)。

  3. 后台运行进程

    1. 命令末尾加&:将进程后台运行(如java -jar app.jar&),但关闭终端后进程会终止;

    2. nohup 命令&:后台运行进程,且关闭终端后进程仍继续运行(如nohup java -jar app.jar&),输出日志默认保存到nohup.out文件;

    3. jobs:查看当前终端后台运行的进程;

    4. fg 进程编号:将后台进程切换到前台(如fg 1:将编号为1的后台进程切换到前台)。

面试补充

进程状态:Linux进程有5种常见状态(通过ps命令查看STAT列):R(运行态)、S(睡眠态)、D(不可中断睡眠态)、Z(僵尸态)、T(停止态);其中僵尸态(Z)是进程已终止,但父进程未回收其资源,需终止父进程或重启系统解决。

5. Linux 磁盘管理(分区、格式化、挂载)

面试标准回答

Linux磁盘管理核心是“分区→格式化→挂载”,只有完成这三步,磁盘才能被系统识别和使用,具体操作流程如下:

  1. 步骤1:查看磁盘信息执行fdisk -l,查看系统中所有磁盘和分区信息(如/dev/sda是第一块硬盘,/dev/sda1是第一块硬盘的第一个分区)。

  2. 步骤2:磁盘分区使用fdisk /dev/sda进入分区工具,执行以下操作:

    1. 输入n:创建新分区;

    2. 选择分区类型(主分区p,扩展分区e),设置分区大小;

    3. 输入w:保存分区设置,退出分区工具。

  3. 步骤3:格式化分区将分区格式化为指定的文件系统(如ext4、xfs),命令:mkfs.ext4 /dev/sda2(将/dev/sda2分区格式化为ext4文件系统)。

  4. 步骤4:挂载分区将格式化后的分区挂载到系统的某个目录(挂载点),才能访问分区内的文件:

    1. 临时挂载:mount /dev/sda2 /mnt/data(将/dev/sda2挂载到/mnt/data目录),重启系统后挂载失效;

    2. 永久挂载:编辑/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),核心操作包括“开启/关闭防火墙、开放端口、查看防火墙状态”,具体命令如下:

  1. 查看防火墙状态systemctl status firewalld(active(running)表示开启,inactive(dead)表示关闭)。

  2. 开启/关闭/重启防火墙

    1. 开启:systemctl start firewalld

    2. 关闭:systemctl stop firewalld(生产环境不建议关闭,可开放指定端口);

    3. 重启:systemctl restart firewalld

    4. 设置开机自启:systemctl enable firewalld

    5. 关闭开机自启:systemctl disable firewalld

  3. 开放端口(常用)

    1. 临时开放端口(重启防火墙后失效):firewall-cmd --add-port=80/tcp(开放80端口,tcp协议);

    2. 永久开放端口:firewall-cmd --add-port=80/tcp --permanent,开放后需重启防火墙(systemctl restart firewalld)生效;

    3. 查看已开放端口:firewall-cmd --list-ports

    4. 关闭开放的端口:firewall-cmd --remove-port=80/tcp --permanent,重启防火墙生效。

  4. 开放服务(替代开放端口)例如开放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日志用于记录系统运行状态、服务运行情况、错误信息等,是排查故障的核心依据,常用日志路径和查看方法如下:

  1. 核心日志路径

    1. /var/log/messages:系统核心日志,记录系统启动、内核、服务等所有重要信息,是排查系统故障的首选;

    2. /var/log/nginx/error.log:Nginx错误日志,记录Nginx启动、转发、访问过程中的错误信息;

    3. /var/log/nginx/access.log:Nginx访问日志,记录所有客户端访问Nginx的请求信息(IP、时间、请求路径、状态码等);

    4. /var/log/secure:安全日志,记录用户登录、sudo操作、ssh登录等安全相关信息(如密码错误、远程登录成功);

    5. /var/log/mysqld.log:MySQL日志,记录MySQL启动、运行、错误等信息(路径可能因MySQL配置不同而变化);

    6. /var/log/boot.log:系统启动日志,记录系统启动过程中的所有信息。

  2. 日志查看常用方法

    1. 实时监控日志:tail -f /var/log/messages(实时查看系统日志变化);

    2. 查看日志中包含指定关键词的内容:grep "error" /var/log/nginx/error.log(查看Nginx错误日志中的error信息);

    3. 查看指定时间范围内的日志:结合grep和时间格式(如grep "2024-05-01" /var/log/access.log);

    4. 查看日志最后100行:tail -n 100 /var/log/messages

面试补充

日志轮转:Linux通过logrotate工具实现日志轮转(将旧日志压缩、重命名,避免日志文件过大),配置文件路径:/etc/logrotate.conf(全局配置)、/etc/logrotate.d/(各服务单独配置,如nginx、mysql)。

8. Linux 远程登录方式及密钥登录配置

面试标准回答

Linux远程登录是运维和开发的常用操作,核心方式有“密码登录”和“密钥登录”,其中密钥登录更安全(避免密码泄露),是生产环境首选,具体配置和操作如下:

  1. 1. 密码登录(基础方式)通过ssh命令远程登录,命令:ssh 用户名@服务器IP,例如ssh root@192.168.1.100,输入密码后即可登录;若服务器端口不是默认22,需指定端口:ssh -p 2222 root@192.168.1.100

  2. 2. 密钥登录(推荐,更安全)核心原理:客户端生成公钥和私钥,将公钥上传到远程服务器,登录时客户端用私钥验证,无需输入密码,具体配置步骤:

    1. 步骤1:客户端生成密钥对(Windows用Xshell、Putty,Linux/macOS用终端):ssh-keygen -t rsa,按回车默认生成(密钥存储路径:~/.ssh/,id_rsa是私钥,id_rsa.pub是公钥),无需设置密码(若设置密码,登录时需输入密钥密码)。

    2. 步骤2:将客户端公钥上传到远程服务器:ssh-copy-id root@192.168.1.100,输入服务器密码,即可将公钥(id_rsa.pub)复制到服务器的~/.ssh/authorized_keys文件中。

    3. 步骤3:测试密钥登录: 执行ssh root@192.168.1.100,无需输入密码,直接登录成功。

    4. 步骤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:用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;

http://www.jsqmd.com/news/682134/

相关文章:

  • GAN训练总崩盘?从‘警察与造假者’的比喻到实战避坑指南(含PyTorch代码示例)
  • 5个步骤让视频字幕制作效率提升300%:VideoSrt深度实战指南
  • 如何用macOS自动点击器高效解放双手:完整指南与实战技巧
  • 第四篇:《元素定位大法:从ID到XPath,写出健壮的定位表达式》
  • 告别迷茫!Air780E开发板CSDK环境搭建保姆级教程(从Git到烧录)
  • 市场解析:在线浊度仪源头厂家,哪些品牌与厂家引领潮流? - 品牌推荐大师
  • 3个理由告诉你为什么Easy-Scraper是网页数据提取的最佳选择
  • BilibiliDown音频提取终极指南:3分钟学会B站音频批量下载
  • OpenMV IDE 3分钟安装指南:从零开始运行视觉项目的完整教程
  • 【立体视觉(五)】之SGM算法:从代价聚合到视差优化的实战解析
  • XXL-Job 2.4.0版,如何用PageHelper插件搞定达梦、Oracle等数据库的分页难题?
  • XMOS爱斯摩斯产品特点以及应用领域有哪些方案应用?
  • PyCharm社区版2024.x在Ubuntu 22.04上的安装避坑指南:从下载、解压到解决‘找不到Java’错误
  • 合肥豪杰汽车服务:合肥旅游租车哪家好 - LYL仔仔
  • 从浪潮服务器到VMware虚拟机:一份通用的Ubuntu 20.04静态IP配置清单(含多网卡、多IP场景)
  • agno v2.5.17 更新:文件引用可关闭、GitHub 配置支持按请求指定、流式与组件加载全面修复,稳定性再升级
  • 如何快速掌握原神角色培养:胡桃工具箱完整使用指南
  • 从用户痛点到技术突破:网盘直链解析工具的全新进化之路
  • 用PyTorch复现FCN语义分割:从VGG16预训练到FCN-8s实战,附完整代码与避坑指南
  • 实测对比:ORB_SLAM3在Jetson AGX Xavier上的帧率提升真有59%吗?
  • 保姆级教程:在浪潮F37X加速卡上,用Vivado 2023.1和XDMA IP核搭建PCIe DMA测试环境(含完整脚本)
  • 别再只盯着YOLO了!聊聊Siam-NestedUNet:这个融合了UNet++和注意力机制的网络如何解决“漏检”难题
  • 保姆级教程:用Unlocker 4.2.4在VMware Workstation 17上轻松解锁MacOS虚拟机选项
  • 无锡兆材包装:江阴比较好的二手拖盘回收公司推荐几家 - LYL仔仔
  • 4月22日成都地区马钢产H型钢(1998-Q235B;100-1000mm)现货厂家 - 四川盛世钢联营销中心
  • 手机变身系统急救神器:当电脑崩溃时,用EtchDroid拯救你的操作系统
  • JPEXS Free Flash Decompiler:SWF资源提取与反编译的终极免费工具
  • 国家中小学智慧教育平台电子课本下载神器:3分钟搞定全套教材PDF
  • 告别USB线!给Ender-3 V2装上Klipper后,我是这样用Fluidd网页远程操控打印的
  • IDEA: 打造个性化编程环境的主题、字体与插件实战指南