跳转至

Linux 面试题

Linux 面试重点包括常用命令、日志排查、进程管理、权限管理和网络排查。

怎么在 Linux 中查看日志?

常用命令:

1. 实时查看(最常用)
   tail -f app.log
   tail -n 200 -f app.log  # 先显示后 200 行再跟踪

2. 搜索关键字
   grep "ERROR" app.log
   grep -n "ERROR" app.log  # 显示行号
   grep -A 5 "ERROR" app.log  # 显示匹配行后 5 行

3. 分页查看
   less app.log  # 推荐,支持搜索和翻页

4. 看头/尾
   head -n 50 app.log  # 前 50 行
   tail -n 50 app.log  # 后 50 行

怎么查找并杀死进程?

查找进程:
ps -ef | grep java
ps aux | grep nginx

杀死进程:
kill PID              # 发送 TERM 信号(友好退出)
kill -9 PID           # 强制杀死
killall nginx         # 按名称杀
pkill -f "java.*MyApp"  # 按命令行匹配杀

组合命令:
ps -ef | grep java | grep -v grep | awk '{print $2}' | xargs kill -9

文件权限 755 和 644 是什么意思?

权限由 3 组数字组成:所有者 | 所属组 | 其他用户

数字含义:
4 = 读(r)
2 = 写(w)
1 = 执行(x)
相加:7 = rwx, 6 = rw-, 5 = r-x, 4 = r--

755 = rwxr-xr-x
  所有者:读+写+执行
  所属组:读+执行
  其他用户:读+执行
  用途:脚本文件

644 = rw-r--r--
  所有者:读+写
  所属组:只读
  其他用户:只读
  用途:配置文件

600 = rw-------
  只有所有者可读写
  用途:密钥文件

怎么查看磁盘和内存使用情况?

磁盘:
df -h                # 查看磁盘空间
du -h --max-depth=1  # 查看当前目录各子目录大小

内存:
free -h              # 查看内存使用
free -m              # 以 MB 为单位

CPU:
top                  # 实时监控
htop                 # 更友好的监控工具

组合:
du -h --max-depth=1 / 2>/dev/null | sort -h  # 按大小排序

nohup 命令是什么?怎么用?

nohup = no hang up,终端关闭后进程不退出

用法:
nohup ./startup.sh > app.log 2>&1 &

拆解:
  nohup        终端关闭后不退出
  ./startup.sh 要执行的脚本
  > app.log    标准输出写入 app.log
  2>&1         标准错误也重定向到标准输出
  &            放到后台运行

查看后台任务:jobs
切回前台:fg %1

怎么查看端口被谁占用?

Linux:
netstat -anp | grep 8080
ss -tlnp | grep 8080
lsof -i:8080

Windows:
netstat -ano | findstr :8080
tasklist | findstr <PID>

参数说明:
netstat -anp:显示所有连接(-a)、数字显示(-n)、显示进程(-p)
ss -tlnp:显示 TCP 监听(-t)、监听状态(-l)、数字(-n)、进程(-p)

软链接和硬链接有什么区别?

软链接(Symbolic Link):
- 类似 Windows 的快捷方式
- 可以跨文件系统
- 可以链接目录
- 删除原文件,软链接失效
- ln -s source link_name

硬链接(Hard Link):
- 和原文件共享同一个 inode
- 不能跨文件系统
- 不能链接目录
- 删除原文件,硬链接仍可用
- ln source link_name

crontab 怎么配置定时任务?

语法:
* * * * * command
│ │ │ │ │
│ │ │ │ └── 星期几(0-6,0=周日)
│ │ │ └──── 月份(1-12)
│ │ └────── 日期(1-31)
│ └──────── 小时(0-23)
└────────── 分钟(0-59)

示例:
* * * * *        每分钟
0 2 * * *        每天凌晨 2 点
*/5 * * * *      每 5 分钟
0 9 * * 1-5      工作日上午 9 点

命令:
crontab -e       编辑定时任务
crontab -l       查看定时任务
crontab -r       删除所有定时任务

怎么查看系统资源使用情况?

常用命令:

top              # 实时查看 CPU、内存、进程
htop             # top 的增强版(需要安装)
free -m          # 查看内存(MB 为单位)
df -h            # 查看磁盘空间
du -sh /path     # 查看目录大小
ps -ef           # 查看所有进程
ps aux | grep java  # 查找特定进程

free -m 重点关注:
  total     = 总内存
  used      = 已使用
  free      = 空闲
  available = 还能用的内存(含缓存可回收部分)

实际看内存是否紧张,重点看 available,因为 Linux 会用空闲内存做缓存。

面试评分参考

维度 初级(1-2年) 中级(3-5年)
基本操作 会文件操作、查看日志 能用 awk/sed 处理日志
进程管理 会查进程、杀进程 能分析进程状态、排查卡死
权限管理 知道 chmod 用法 能配置用户和权限组
网络排查 会 ping、telnet 能用 tcpdump 抓包分析