Linux 面试题 50 道

笔记/Linux/Linux 面试/Linux 面试题 50 道

整理自 Linux 面试题 50 道,已精简冗余表述。详细原理见 Linux 概述与架构Linux 文件系统与链接Linux 安全与运维排查

相关学习笔记#

专题笔记
Linux 概述与架构Linux 概述与架构
文件系统与链接Linux 文件系统与链接
安全与运维排查Linux 安全与运维排查

目录#


Linux 概述#

1. 什么是 Linux#

免费开源、类 Unix 的多用户多任务操作系统,支持多线程与多 CPU,可运行 Unix 工具、应用程序与网络协议,支持 32/64 位硬件。Web 项目普遍部署在 Linux 上。→ Linux 概述与架构

2. Windows 和 Linux 的区别#

维度WindowsLinux
定位民用,娱乐/办公服务器/开发部署
特点图形化强、日志完善性能出色、可针对性优化
适用普通用户日常使用软件开发与生产部署

3. Unix 和 Linux 有什么区别#

维度LinuxUnix
开源开源免费商业授权
跨平台好,多种硬件弱,多与硬件绑定
界面命令行 + 图形传统以命令行为主
硬件要求较低较苛刻
用户群体广泛银行、电信等大型企业

Linux 继承 Unix 功能,在普通 PC 上实现 Unix 特性,因开源更易普及。

4. 什么是 Linux 内核#

系统核心,控制所有硬件与软件,负责:系统内存管理、应用程序管理、硬件设备管理、文件系统管理。

5. Linux 的基本组件是什么#

内核、Shell、GUI、系统实用程序与应用程序;各组件代码均可免费获取。

6. Linux 的体系结构#

分为 用户空间内核空间

  • 用户空间:用户应用程序、C 库
  • 内核空间:系统调用接口、内核、平台相关代码

分层的目的是利用 CPU 不同工作模式保护内核安全。用户空间进入内核空间的方式:系统调用硬件中断

7. BASH 和 DOS 之间的基本区别#

  1. BASH 命令区分大小写,DOS 不区分
  2. BASH 中 / 是目录分隔符、\ 是转义;DOS 中 / 是参数分隔符、\ 是目录分隔符
  3. DOS 遵循 8.3 命名约定,BASH 无此限制

8. Linux 开机启动过程#

  1. 主机加电自检,加载 BIOS
  2. 读取 MBR 引导(GRUB、LILO)
  3. 引导 Linux 内核
  4. 运行第一个进程 init(PID=1)
  5. 进入相应运行级别
  6. 运行终端,登录

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 种文件类型:普通文件、目录、字符设备、块设备、符号链接等。

Linux 文件系统与链接

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 可创建任意用户可创建
删除原文件不影响(硬链接仍可用)链接失效(悬空)
实际使用较少更常用

Linux 文件系统与链接

25. RAID 是什么#

独立磁盘冗余阵列(Redundant Array of Independent Disks),多块廉价硬盘组成阵列,提升性能或冗余。RAID 0/1/5/10 等在可靠性与性能间权衡。云时代更多接触云盘/SSD,物理 RAID 接触较少。


安全#

26. 一台 Linux 系统初始化后需要做什么安全工作#

  1. 添加普通用户,禁止 root 远程登录,更改 SSH 端口
  2. 密钥登录,禁止密码登录
  3. 开启防火墙,关闭 SELinux(按业务设规则)
  4. 安装 fail2ban 防 SSH 暴力破解
  5. 限制仅公司出口 IP 可登录(或 VPN)
  6. 历史命令条数限制为 10 条
  7. 仅必要服务器访问外网
  8. 软件层防护:nginx_waf 防 SQL 注入;Web 用 www 用户启动,目录属主改为 www

Linux 安全与运维排查

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 主机#

  1. 明确用途(Web、DB、游戏服务器等),决定配置
  2. 确定安装方式、默认组件、分区方案
  3. 优化系统参数、创建所需用户

32. 用户反馈网站访问慢,如何处理#

可能原因

  1. 出口带宽不足:并发大时分摊带宽小;跨运营商导致缩减
  2. 服务器负载高w/uptime 看负载,top 看 CPU/内存,sar 分析网卡是否遭攻击
  3. 数据库瓶颈:慢查询优化;加 Redis 缓存;MySQL 主从读写分离
  4. 代码未优化:SQL 未优化等

排查步骤

  1. 先确认用户端还是服务端(自己访问快则偏用户端)
  2. 浏览器调试看哪项加载慢(图片/接口)
  3. 查服务器硬件(云监控 CPU/内存/带宽)
  4. 查 MySQL 慢查询日志

解决:加带宽、SQL 优化、Redis 缓存、MySQL 主从、CDN、架构拆分专角色多机。

Linux 安全与运维排查

33. Linux 性能调优都有哪几种方法#

  1. 关闭不必要的 daemons
  2. 关闭 GUI(服务器)
  3. 调整内核参数
  4. 处理器子系统调优
  5. 内存子系统调优
  6. 文件系统子系统调优
  7. 网络子系统调优

基本命令#

34. 目录与文件基础命令#

命令作用常用示例
cd切换目录cd ..cd /optcd ~
pwd显示当前路径pwd
ls / ll列目录ls -all -hll -al
touch创建文件touch test.txt
mkdir创建目录mkdir dirmkdir -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 filerm -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

Terminal window
grep String test.java # 文件中查找
ps aux | grep java # 查含 java 的进程
ll | grep java # 查含 java 的文件/目录

37. 文件传输与压缩#

Terminal window
# lrzsz:Windows ↔ Linux 传文件
yum install -y lrzsz
rz # 上传到 Linux
sz file # 下载到 Windows
# tar 解压/压缩
tar -zxvf file.tar.gz # 解压到当前目录
tar -zxvf file.tar.gz -C /opt/ # 解压到指定目录
tar -zcvf out.tar.gz dir/ # 压缩

38. ps 进程查看#

Terminal window
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. 其他常用命令#

Terminal window
file 文件名 # 查看文件类型
reboot # 重启
halt # 关机
ntpdate ntp1.aliyun.com # 同步时间
date # 查看时间
# 改时区
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
文章目录

文章目录