整理自 Linux 面试题 50 道,已精简冗余表述。详细原理见 Linux 概述与架构、Linux 文件系统与链接、Linux 安全与运维排查。
相关学习笔记
| 专题 | 笔记 |
|---|---|
| Linux 概述与架构 | Linux 概述与架构 |
| 文件系统与链接 | Linux 文件系统与链接 |
| 安全与运维排查 | Linux 安全与运维排查 |
目录
Linux 概述
1. 什么是 Linux
免费开源、类 Unix 的多用户多任务操作系统,支持多线程与多 CPU,可运行 Unix 工具、应用程序与网络协议,支持 32/64 位硬件。Web 项目普遍部署在 Linux 上。→ Linux 概述与架构
2. Windows 和 Linux 的区别
| 维度 | Windows | Linux |
|---|---|---|
| 定位 | 民用,娱乐/办公 | 服务器/开发部署 |
| 特点 | 图形化强、日志完善 | 性能出色、可针对性优化 |
| 适用 | 普通用户日常使用 | 软件开发与生产部署 |
3. Unix 和 Linux 有什么区别
| 维度 | Linux | Unix |
|---|---|---|
| 开源 | 开源免费 | 商业授权 |
| 跨平台 | 好,多种硬件 | 弱,多与硬件绑定 |
| 界面 | 命令行 + 图形 | 传统以命令行为主 |
| 硬件要求 | 较低 | 较苛刻 |
| 用户群体 | 广泛 | 银行、电信等大型企业 |
Linux 继承 Unix 功能,在普通 PC 上实现 Unix 特性,因开源更易普及。
4. 什么是 Linux 内核
系统核心,控制所有硬件与软件,负责:系统内存管理、应用程序管理、硬件设备管理、文件系统管理。
5. Linux 的基本组件是什么
内核、Shell、GUI、系统实用程序与应用程序;各组件代码均可免费获取。
6. Linux 的体系结构
分为 用户空间 与 内核空间:
- 用户空间:用户应用程序、C 库
- 内核空间:系统调用接口、内核、平台相关代码
分层的目的是利用 CPU 不同工作模式保护内核安全。用户空间进入内核空间的方式:系统调用、硬件中断。
7. BASH 和 DOS 之间的基本区别
- BASH 命令区分大小写,DOS 不区分
- BASH 中
/是目录分隔符、\是转义;DOS 中/是参数分隔符、\是目录分隔符 - DOS 遵循 8.3 命名约定,BASH 无此限制
8. Linux 开机启动过程
- 主机加电自检,加载 BIOS
- 读取 MBR 引导(GRUB、LILO)
- 引导 Linux 内核
- 运行第一个进程 init(PID=1)
- 进入相应运行级别
- 运行终端,登录
9. Linux 系统缺省的运行级别
| 级别 | 含义 |
|---|---|
| 0 | 关机 |
| 1 | 单用户模式 |
| 2 | 字符界面多用户(不支持网络) |
| 3 | 字符界面多用户 |
| 4 | 未分配 |
| 5 | 图形界面多用户 |
| 6 | 重启 |
10. Linux 使用的进程间通信方式
管道(pipe)、流管道(s_pipe)、有名管道(FIFO)、信号(signal)、消息队列、共享内存、信号量、套接字(socket)。
11. Linux 有哪些系统日志文件
较重要的是 /var/log/messages,汇总多进程日志,可从中发现入侵企图或成功入侵。若部署 ELK 等日志集中收集,也会被采集。
12. Linux 系统安装多个桌面环境有帮助吗
通常一个桌面环境(KDE/Gnome)即可。可切换但部分程序在不同环境兼容性不同,实际以需求选择。
13. 什么是交换空间
Linux 在磁盘上划出的一块空间,当 RAM 不足以容纳并发程序时,将部分内存页换出到交换空间。
14. 什么是 root 帐户
类似系统管理员,拥有完全控制权:创建/维护用户、分配权限。每次安装 Linux 默认存在。
15. 什么是 LILO
Linux 引导加载程序,将 Linux 操作系统加载到主内存以便启动。
16. 什么是 BASH
Bourne Again SHell 缩写,Steve Bourne 编写,替代原始 Bourne Shell(/bin/sh),结合原功能并更易用,现为多数 Linux 默认 Shell。
17. 什么是 CLI
命令行界面(Command-Line Interface),通过键盘输入指令,不支持鼠标。省资源,熟记命令后操作往往更快。
18. 什么是 GUI
图形用户界面(Graphical User Interface),用鼠标操作图标/菜单,直观但占用更多资源。
19. 开源的优势是什么
可免费分发软件及源码;社区可添加功能、修 Bug、优化后再分发,人人受益。
20. GNU 项目的重要性是什么
自由软件运动:自由运行、学习修改、再分发副本、改进并公开发布,推动 Linux 生态发展。
磁盘、目录、文件
21. 简单 Linux 文件系统
一切皆文件:设备、目录、普通文件均视为文件。Linux 支持 5 种文件类型:普通文件、目录、字符设备、块设备、符号链接等。
22. Linux 的目录结构是怎样的
| 目录 | 说明 |
|---|---|
/bin | 常用二进制命令(ls、cat、mkdir) |
/etc | 系统配置 |
/home | 用户主目录(如 /home/user,可写 ~user) |
/usr | 系统应用程序 |
/opt | 可选第三方软件(如 tomcat) |
/proc | 虚拟文件系统,映射系统内存信息 |
/root | 超级用户主目录 |
/sbin | 系统级管理命令(ifconfig 等),root 权限 |
/dev | 设备文件 |
/mnt | 临时挂载点 |
/boot | 引导文件 |
/lib | 系统运行库 |
/tmp | 临时文件 |
/var | 可变数据(日志等) |
/lost+found | 异常关机后孤立文件 |
23. 什么是 inode
硬盘最小存储单位是扇区(512 字节),操作系统以块(block,常见 4KB)为单位读写。存储文件元信息(创建者、日期、大小等)的区域叫 inode(索引节点),每个文件对应一个 inode。
Linux 通过 inode 节点表将逻辑结构与物理结构转换:inode 含磁盘地址表(13 个块号),文件名与 inode 关联,读取时查目录项得 inode 号,再按块号读数据。
24. 什么是硬链接和软链接
| 维度 | 硬链接 | 软链接(符号链接) |
|---|---|---|
| 本质 | 指向 inode 的指针,链接数 +1 | 新建 inode,存原文件路径 |
| 跨分区 | 不可以 | 可以 |
| 目录 | 仅 root 可创建 | 任意用户可创建 |
| 删除原文件 | 不影响(硬链接仍可用) | 链接失效(悬空) |
| 实际使用 | 较少 | 更常用 |
25. RAID 是什么
独立磁盘冗余阵列(Redundant Array of Independent Disks),多块廉价硬盘组成阵列,提升性能或冗余。RAID 0/1/5/10 等在可靠性与性能间权衡。云时代更多接触云盘/SSD,物理 RAID 接触较少。
安全
26. 一台 Linux 系统初始化后需要做什么安全工作
- 添加普通用户,禁止 root 远程登录,更改 SSH 端口
- 密钥登录,禁止密码登录
- 开启防火墙,关闭 SELinux(按业务设规则)
- 安装 fail2ban 防 SSH 暴力破解
- 限制仅公司出口 IP 可登录(或 VPN)
- 历史命令条数限制为 10 条
- 仅必要服务器访问外网
- 软件层防护:nginx_waf 防 SQL 注入;Web 用 www 用户启动,目录属主改为 www
27. 什么叫 CC 攻击?什么叫 DDOS 攻击
- CC 攻击:模拟多用户频繁访问页面,消耗系统资源
- DDOS 攻击:分布式拒绝服务,多机联合攻击目标,大量合法请求占满带宽
预防:硬件防火墙做流量清洗,将攻击流量引入黑洞;通常向 ISP 购买防攻击服务。
28. 什么是网站数据库注入
程序员未校验用户输入合法性,用户提交数据库查询代码获取未授权数据,即 SQL 注入。从正常 Web 端口访问,表面与普通请求无异。
过滤与预防:nginx_waf 过滤;预编译/参数绑定;输入校验;最小权限。
29. Shell 脚本是什么
包含一个或多个命令的文本文件,将日常多条命令组合自动化执行。
实战
30. 如何选择 Linux 操作系统版本
- 桌面:Ubuntu
- 服务器:RHEL 或 CentOS(互联网公司多数选 CentOS)
- 高安全:Debian / FreeBSD
- 数据库/邮件:SUSE
- 新技术:Fedora(RHEL/CentOS 预发布版)
互联网公司常用 CentOS 6/7 系列,无版权约束,侧重服务器。
31. 如何规划一台 Linux 主机
- 明确用途(Web、DB、游戏服务器等),决定配置
- 确定安装方式、默认组件、分区方案
- 优化系统参数、创建所需用户
32. 用户反馈网站访问慢,如何处理
可能原因:
- 出口带宽不足:并发大时分摊带宽小;跨运营商导致缩减
- 服务器负载高:
w/uptime看负载,top看 CPU/内存,sar分析网卡是否遭攻击 - 数据库瓶颈:慢查询优化;加 Redis 缓存;MySQL 主从读写分离
- 代码未优化:SQL 未优化等
排查步骤:
- 先确认用户端还是服务端(自己访问快则偏用户端)
- 浏览器调试看哪项加载慢(图片/接口)
- 查服务器硬件(云监控 CPU/内存/带宽)
- 查 MySQL 慢查询日志
解决:加带宽、SQL 优化、Redis 缓存、MySQL 主从、CDN、架构拆分专角色多机。
33. Linux 性能调优都有哪几种方法
- 关闭不必要的 daemons
- 关闭 GUI(服务器)
- 调整内核参数
- 处理器子系统调优
- 内存子系统调优
- 文件系统子系统调优
- 网络子系统调优
基本命令
34. 目录与文件基础命令
| 命令 | 作用 | 常用示例 |
|---|---|---|
cd | 切换目录 | cd ..、cd /opt、cd ~ |
pwd | 显示当前路径 | pwd |
ls / ll | 列目录 | ls -a、ll -h、ll -al |
touch | 创建文件 | touch test.txt |
mkdir | 创建目录 | mkdir dir、mkdir -p a/b |
cat | 查看文件 | cat file.log(Ctrl+c 暂停,Ctrl+d 退出) |
more | 分页查看 | 空格翻页,q 退出 |
less | 分页(可定位末尾) | less -mN file |
tail | 查看末尾 | tail -10 file |
cp | 复制 | cp -r dir/ dest/ |
mv | 移动/重命名 | mv a.txt b.txt |
rm | 删除 | rm file;rm -rf dir(慎用 rm -rf /*) |
find | 查找 | find / -name '*.log' |
35. vi / vim 编辑器
三种模式:一般模式(浏览/快捷操作)、插入模式(i/a/o 进入,Esc 返回)、底行模式(: 进入,:wq 保存退出,:q! 强制退出)。
常用快捷键:dd 删行、yy 复制、p 粘贴、u 撤销、/word 向下查找、?word 向上查找、:1,90s/old/new/g 替换。
36. grep 与管道
管道语法:命令1 | 命令2 | 命令3
grep String test.java # 文件中查找ps aux | grep java # 查含 java 的进程ll | grep java # 查含 java 的文件/目录37. 文件传输与压缩
# lrzsz:Windows ↔ Linux 传文件yum install -y lrzszrz # 上传到 Linuxsz file # 下载到 Windows
# tar 解压/压缩tar -zxvf file.tar.gz # 解压到当前目录tar -zxvf file.tar.gz -C /opt/ # 解压到指定目录tar -zcvf out.tar.gz dir/ # 压缩38. ps 进程查看
ps -ef # 标准格式ps aux # BSD 格式ps aux | grep redis # 过滤进程关键字段:USER、PID、%CPU、%MEM、STAT、TIME。
39. kill 终止进程
配合 ps 使用:kill -15 PID(推荐,正常终止);kill -9 PID(强制,不推荐)。
40. 网络与系统监控命令
| 命令 | 作用 |
|---|---|
ifconfig | 查看/配置网络接口(需 net-tools) |
ping ip | 测试连通性(Ctrl+C 停止) |
free | 内存使用(-m MB、-g GB) |
top | 实时进程与资源 |
netstat | 网络连接状态 |
clear | 清屏 |
41. 其他常用命令
file 文件名 # 查看文件类型reboot # 重启halt # 关机ntpdate ntp1.aliyun.com # 同步时间date # 查看时间# 改时区rm -rf /etc/localtimeln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime