news 2026/5/14 20:45:35

大数据开发面试常问的 Linux 命令 总结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大数据开发面试常问的 Linux 命令 总结

大数据开发面试必备Linux命令清单


本文总结了大数据开发面试中高频考察的Linux命令,重点突出与实际开发场景相关的技能点。核心内容包括:

  1. 文本处理三剑客(grep/awk/sed)的日志分析和数据处理应用
  2. 进程管理(ps/kill)和资源监控(top/free)命令
  3. 日志追踪(tail -f)和文件统计(wc)技巧
  4. 定时任务(crontab)和文件查找(find)的实战用法
  5. 网络诊断(netstat/ping)和性能分析(iostat)工具

特别整理了大数据场景下的典型命令组合,如排查Spark任务失败、清理HDFS数据等实用案例。


同时对比了kill -9/-15、>与>>等常见命令区别,帮助面试者精准应答技术细节问题。


总结大数据开发面试常问的 Linux 命令


作为大数据开发面试,Linux命令的考察重点与普通运维不同,更侧重于文件处理、日志查看、进程管理、性能监控、定时任务等实际开发场景。


下面我按照面试频率重要程度,给你整理一份大数据开发面试必备的Linux命令清单。


一、面试必考(出现率90%+)

1. 文本处理三剑客(awk/sed/grep)

命令面试考点大数据场景
grep筛选日志、过滤关键信息从海量日志中找错误、异常
sed替换、删除指定行清洗数据、格式化文本
awk按列处理(最常考)解析结构化日志、CSV文件、取特定字段
面试高频问题

bash

# 1. 从日志中找出包含"ERROR"的行 grep "ERROR" app.log # 2. 统计某个IP出现的次数 cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn # 3. 取出文件第3列(逗号分隔) awk -F "," '{print $3}' data.csv # 4. 输出内存使用率(top命令结果解析) top -bn1 | grep "Cpu(s)" | awk '{print $2}' | awk -F "%" '{print $1}' # 5. 替换文件中的旧内容为新内容 sed -i 's/old/new/g' file.txt

2. 进程与资源查看

命令面试考点大数据场景
ps查看进程是否存在、进程ID检查Hadoop/Spark服务是否启动
top实时监控CPU、内存排查资源瓶颈、查看哪个进程占用高
kill结束进程杀掉僵死进程、重启服务
free -m查看内存使用检查集群节点内存是否充足
df -h查看磁盘使用检查HDFS数据盘是否满
面试高频问题

bash

# 1. 查看NameNode进程是否存在 ps -ef | grep NameNode | grep -v grep # 2. 强制杀掉进程(-9 和 -15 的区别?) kill -9 PID # 强制杀死,不给清理机会 kill -15 PID # 优雅关闭,允许进程清理资源 # 3. 查看Java进程(大数据组件多是Java写的) ps -ef | grep java # 4. 实时查看CPU最高的5个进程 top -b -n 1 | head -20 # 5. 查看磁盘空间,找出占用大的目录 du -sh /* 2>/dev/null | sort -rh | head -10

二、高频考察(70%+)

3. 日志查看与追踪

命令面试考点大数据场景
tail -f实时追踪日志监控任务执行日志
head / tail查看文件头尾快速预览数据文件
cat查看小文件查看配置文件、小数据文件
less / more分页查看大文件查看几GB的大日志
wc -l统计行数统计数据量
面试高频问题

bash

# 1. 实时查看Hadoop任务日志 tail -f /var/log/hadoop/yarn/userlogs/application_xxx/container_xxx/stdout # 2. 统计文件总行数 wc -l hugefile.txt # 3. 查看文件前10行和后20行 head -10 file.txt && echo "===分隔===" && tail -20 file.txt # 4. 查看文件从第1000行开始的200行(常用于分页查看大文件) tail -n +1000 hugefile.txt | head -200

4. 文件查找与处理

命令面试考点大数据场景
find按条件查找文件查找日志文件、配置文件
xargs批量处理文件批量删除、批量移动文件
sort排序排序数据
uniq去重统计唯一值
wc统计行数字数数据量统计
面试高频问题

bash

# 1. 查找7天前的日志文件并删除 find /var/log -name "*.log" -mtime +7 | xargs rm -rf # 2. 查找大于100MB的文件 find / -type f -size +100M 2>/dev/null # 3. 统计访问日志中独立IP数 cat access.log | awk '{print $1}' | sort | uniq | wc -l # 4. 找出访问量前10的IP cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10

5. 定时任务

命令面试考点大数据场景
crontab -e编辑定时任务定时调度数据同步、清理脚本
crontab -l查看定时任务检查已有的调度
crontab -r删除定时任务清理无用调度
面试高频问题

bash

# 1. 每天凌晨2点执行数据同步脚本 0 2 * * * /home/hadoop/bin/sync_data.sh # 2. 每周日凌晨3点清理临时数据 0 3 * * 0 /home/hadoop/bin/clean_temp.sh # 3. 每隔10分钟检查Hadoop服务状态 */10 * * * * /home/hadoop/bin/check_hadoop.sh # 4. 每月1号凌晨1点执行数据压缩归档 0 1 1 * * /home/hadoop/bin/archive_data.sh

三、中等频率(40-60%)

6. 网络与通信

命令面试考点大数据场景
netstat -apn查看端口占用检查HDFS端口9870是否正常监听
ss查看socket连接更快的netstat替代
ping测试网络连通排查节点间通信问题
telnet测试端口是否通测试某个节点端口是否开放
curl发送HTTP请求测试REST API、下载数据
面试高频问题

bash

# 1. 检查NameNode的9870端口是否在监听 netstat -apn | grep 9870 # 2. 测试DataNode的50010端口是否通 telnet datanode01 50010 # 3. 查看当前所有TCP连接状态统计 netstat -ant | awk '{print $6}' | sort | uniq -c | sort -rn # 4. 下载Hadoop安装包 curl -O https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz

7. 文件权限

命令面试考点大数据场景
chmod修改权限给脚本添加执行权限
chown修改属主/属组修改HDFS数据目录权限
ls -l查看权限排查权限错误
面试高频问题

bash

# 1. 给脚本添加执行权限 chmod +x run_spark.sh # 2. 修改整个目录的属主为hadoop用户 chown -R hadoop:hadoop /opt/hadoop_data # 3. 给文件设置644权限(rw-r--r--) chmod 644 config.xml # 解释:属主读写,其他人只读 # 4. 面试题:755是什么意思? # 答:属主:rwx(7),属组:r-x(5),其他:r-x(5)

8. 磁盘与空间管理

命令面试考点大数据场景
du -sh查看目录大小定位哪个目录占用空间大
df -h查看磁盘使用率检查数据盘是否快满了
lsblk查看磁盘分区查看磁盘挂载情况
面试高频问题

bash

# 1. 找出/home下最大的10个文件 find /home -type f -exec du -sh {} \; 2>/dev/null | sort -rh | head -10 # 2. 查看哪个挂载点磁盘使用率最高 df -h | awk '{print $5,$1}' | sort -rn | head -5 # 3. 查看Hadoop数据目录大小 du -sh /data/hadoop/*

四、加分项(面试时亮眼)

9. 性能分析与调优

命令用途大数据场景
iostat查看磁盘IO分析HDFS读写是否瓶颈
vmstat查看虚拟内存分析内存交换情况
sar历史性能数据回溯分析历史性能问题
lsof查看进程打开的文件排查"文件打开过多"错误
面试加分回答

bash

# 1. 查看磁盘IO情况(HDFS很依赖磁盘) iostat -x 1 # 每秒刷新,看%util列 # 2. 查看系统负载(load average) uptime # load average: 0.5, 0.8, 1.2 # 分别表示1分钟、5分钟、15分钟平均负载 # 3. 查看一个进程打开了哪些文件 lsof -p PID # 4. 查看内存使用详情 cat /proc/meminfo | grep -E "MemTotal|MemFree|MemAvailable"

10. 重定向与管道(基础但高频)

符号含义大数据场景
|管道组合多个命令
>覆盖重定向将结果写入文件
>>追加重定向追加日志
2>错误重定向只记录错误信息
2>&1合并错误到标准输出同时记录标准输出和错误
面试高频问题

bash

# 1. 将命令的标准输出和错误输出都写入同一个文件 sh run_task.sh > task.log 2>&1 # 2. 只保留错误输出,丢弃标准输出 sh run_task.sh 2> error.log > /dev/null # 3. 管道组合:找出消耗内存最多的Java进程 ps -ef | grep java | awk '{print $2}' | xargs -I {} sh -c "ps -p {} -o rss=,cmd= | awk '{print \$1,\$2}'"

五、面试官常问的"区别题"

对比项区别说明
kill -9vskill -15-9强制杀,-15优雅关闭(可清理资源)
>vs>>>覆盖,>>追加
grepvsawkgrep按行筛选,awk按列处理
morevslessmore只能往下翻,less可上下翻(more less → less功能更多)
$?vs$$$?上一条命令退出码,$$当前shell的PID
ps -efvsps aux格式不同,-ef用标准格式,aux用BSD格式,都能看所有进程
软链接vs硬链接软链接像快捷方式,硬链接是多个文件名指向同一inode

六、大数据场景实战组合命令

场景1:排查Spark任务失败原因

bash

# 1. 找到失败的application ID yarn application -list -appStates FAILED # 2. 找到该任务的日志文件位置 find /var/log/hadoop/yarn -name "*application_xxx*" -type f # 3. 查看最后100行日志,找ERROR tail -100 /path/to/container.log | grep -E "ERROR|Exception|Caused by" # 4. 统计错误类型数量 grep "Exception" /path/to/container.log | awk '{print $NF}' | sort | uniq -c | sort -rn

场景2:清理HDFS临时数据

bash

# 1. 查找7天前的tmp文件 find /data/hadoop/tmp -name "*.tmp" -mtime +7 # 2. 确认无误后删除 find /data/hadoop/tmp -name "*.tmp" -mtime +7 -delete # 3. 定时清理脚本(crontab) 0 2 * * * /home/hadoop/bin/clean_hdfs_tmp.sh >> /var/log/clean_hdfs.log 2>&1

场景3:监控DataNode健康状况

bash

# 1. 检查DataNode进程 ps -ef | grep DataNode | grep -v grep | wc -l # 2. 检查DataNode端口 netstat -apn | grep 50020 | grep LISTEN # 3. 查看DataNode日志最新错误 tail -100 /var/log/hadoop/hdfs/hadoop-hadoop-datanode-*.log | grep ERROR # 4. 检查磁盘使用率 df -h | grep -E "data|Filesystem"

七、面试官可能问的Shell编程

bash

# 1. $0、$1、$@、$# 分别代表什么? $0 # 脚本名字 $1 # 第一个参数 $@ # 所有参数 $# # 参数个数 # 2. if判断文件是否存在 if [ -f /path/to/file ]; then echo "文件存在" fi # 3. 循环处理 for i in {1..10}; do echo "Number: $i" done # 4. 判断命令是否执行成功 if [ $? -eq 0 ]; then echo "成功" fi

八、记忆技巧(针对你的前端背景)

Linux概念前端类比
管道|Promise.then()链式调用
grepArray.filter()
awkmap().split()
sedreplace()+ 正则
ps -efChrome的任务管理器
tail -fconsole.log()实时看输出
重定向>fs.writeFileSync()
/dev/null黑洞,相当于void

九、推荐学习路径

  1. 第一天:ls、cd、pwd、cat、echo、grep

  2. 第二天:ps、kill、top、free、df

  3. 第三天:awk、sed、grep进阶

  4. 第四天:find、xargs、crontab

  5. 第五天:组合实战(排查日志、清理数据)


总结:面试必背的10条命令

序号命令掌握程度
1grep必须熟练
2awk '{print $n}'必须熟练
3sed -i 's/old/new/g'熟练掌握
4ps -ef | grep java必须熟练
5kill -9 PID必须会
6tail -f必须熟练
7find ... -mtime +7 | xargs rm熟练掌握
8crontab -e掌握格式
9netstat -apn | grep 端口掌握
10df -h/free -m掌握

把这10条练熟,大数据开发的Linux面试基本没问题了!


补充面试必背的10条命令,都是什么意思啊,刚刚学,还没记住


你说得对!我直接给了10条命令但没解释清楚意思,对新人不友好。


下面我把这10条命令逐条拆解,用前端类比+英文原词+实际例子帮你彻底搞懂。


面试必背10条命令详解


1.grep— 搜索关键词

bash

grep "ERROR" app.log
组成部分含义
grepGlobalRegularExpressionPrint(全局正则匹配打印)
"ERROR"要搜索的关键词
app.log要搜索的文件

前端类比

javascript

// grep 相当于 filter const result = appLog.filter(line => line.includes('ERROR'));

实际效果:从app.log文件中找出所有包含ERROR的行并打印出来。

面试常问

bash

grep -v "ERROR" app.log # -v 是反选,找不包含ERROR的行 grep -n "ERROR" app.log # -n 显示行号 grep -r "ERROR" ./logs/ # -r 递归搜索整个目录

2.awk '{print $n}'— 取第几列

bash

awk '{print $3}' file.txt
组成部分含义
awk作者姓氏首字母(Aho、Weinberger、Kernighan),一个文本处理工具
'{print $3}'打印第3列(1是第1列,1是第1列,2是第2列...)
file.txt要处理的文件

前端类比

javascript

// awk 相当于 split + 取数组元素 const lines = fileContent.split('\n'); lines.forEach(line => { const cols = line.split(/\s+/); // 默认按空格分割 console.log(cols[2]); // 打印第3列(索引2) });

实际效果:把文件的每一行按空格分割,取出第3列打印。

面试常问

bash

awk -F "," '{print $2}' data.csv # -F 指定分隔符,这里用逗号分割 awk '{print $1, $NF}' file.txt # $NF 表示最后一列 awk '{sum += $3} END {print sum}' file.txt # 计算第3列的总和

3.sed -i 's/old/new/g'— 替换内容

bash

sed -i 's/error/success/g' app.log
组成部分含义
sedStreamEditor(流编辑器)
-iin-place(直接修改原文件,不加-i只是预览)
's/error/success/g's=替换(substitute),把error换成success,g=全局(global)
app.log要修改的文件

前端类比

javascript

// sed 相当于 replaceAll const result = appLog.replaceAll('error', 'success'); // 并且把结果写回原文件 fs.writeFileSync('app.log', result);

实际效果:把app.log文件中所有的error替换成success

面试常问

bash

sed -i '3d' file.txt # 删除第3行(d=delete) sed -n '1,5p' file.txt # 打印第1-5行(p=print,-n禁止默认输出) sed -i 's/old/new/' file.txt # 不加g,只替换每行第一个匹配

4.ps -ef | grep java— 查看Java进程

bash

ps -ef | grep java
组成部分含义
psProcessStatus(进程状态)
-efe=所有进程(every),f=完整格式(full)
|管道,把左边的输出传给右边
grep java筛选包含"java"的行

前端类比

javascript

// ps -ef 相当于任务管理器 const allProcesses = taskManager.getAll(); const javaProcesses = allProcesses.filter(p => p.name.includes('java'));

实际效果:查看系统中所有进程,只显示包含"java"的那些(比如NameNode、DataNode、Spark任务等)。

面试常问

bash

ps aux | grep hadoop # aux是另一种格式,也能看所有进程 ps -ef | grep -v grep | grep java # 去掉grep自身那条 pgrep -f java # 更简洁的方式,只打印PID

5.kill -9 PID— 强制结束进程

bash

kill -9 12345
组成部分含义
kill杀死进程
-9信号9,SIGKILL(强制杀死,不给进程清理机会)
12345进程ID(PID)

前端类比

javascript

// 相当于 Chrome 任务管理器里的"结束进程" process.kill(12345, 'SIGKILL');

实际效果:立刻终止PID为12345的进程,进程来不及做任何清理工作。

面试常问

bash

kill -15 12345 # 优雅关闭,进程可以做清理(关闭文件、释放资源) kill -9 -1 # 杀死当前用户的所有进程 killall java # 杀死所有java进程

区别:-15是"请关闭",-9是"立刻死"。


6.tail -f— 实时追踪日志

bash

tail -f app.log
组成部分含义
tail尾部,查看文件末尾
-ffollow(追踪,文件有新内容就实时显示)

前端类比

javascript

// 相当于 console.log 实时输出 const watcher = fs.watch('app.log', (event) => { console.log(fs.readFileSync('app.log', 'utf8')); });

实际效果:显示文件最后10行(默认),然后实时打印新增的内容,按Ctrl+C退出。

面试常问

bash

tail -100 app.log # 查看最后100行 tail -n +200 app.log # 从第200行开始显示 tail -f app.log | grep ERROR # 实时追踪,只显示包含ERROR的行

7.find ... -mtime +7 | xargs rm— 删除7天前的文件

bash

find /var/log -name "*.log" -mtime +7 | xargs rm -rf
组成部分含义
find查找文件
/var/log要搜索的目录
-name "*.log"文件名以.log结尾
-mtime +7mtime=修改时间,+7表示7天前(超过7天)
|管道,把找到的文件传给xargs
xargs把输入转成命令行参数(因为rm不支持管道直接传)
rm -rf强制删除

前端类比

javascript

// 相当于 const files = findFiles('/var/log', { ext: '.log', daysOld: 7 }); files.forEach(file => fs.rmSync(file, { force: true, recursive: true }));

实际效果:找到/var/log目录下所有7天前修改的.log文件,然后批量删除。

面试常问

bash

find . -type f -size +100M # 找大于100M的文件 find . -type d -name "temp" # 找名为temp的目录 find . -mtime -3 # 找3天内修改的文件 find . -name "*.tmp" -delete # 更安全的写法,不用xargs

为什么用xargsrm不支持从管道直接读数据,所以需要xargs转换。


8.crontab -e— 编辑定时任务

bash

crontab -e
组成部分含义
crontabcron table(定时任务表)
-eedit(编辑)

前端类比

javascript

// 相当于 setInterval,但更强大(可以设置每天/每周执行) setInterval(() => { runTask(); }, 24 * 60 * 60 * 1000);

实际效果:打开一个编辑器,在里面写入定时任务规则,保存后自动生效。

定时任务格式

bash

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

面试常问

bash

crontab -l # 查看当前所有定时任务 crontab -r # 删除所有定时任务 # 例子:每天凌晨2点执行备份 0 2 * * * /home/hadoop/backup.sh # 例子:每10分钟执行一次 */10 * * * * /home/hadoop/check.sh

9.netstat -apn | grep 端口— 查看端口占用

bash

netstat -apn | grep 9870
组成部分含义
netstatNetworkStatistics(网络统计)
-aall(所有端口)
-pprocess(显示进程名/PID)
-nnumeric(用数字显示端口,不解析服务名)
| grep 9870筛选出包含9870的行

前端类比

javascript

// 相当于 const connections = getNetworkConnections(); const port9870 = connections.filter(c => c.port === 9870);

实际效果:查看哪个进程占用了9870端口(HDFS NameNode的Web UI端口)。

面试常问

bash

netstat -an | grep LISTEN # 查看所有监听端口 ss -tlnp | grep 9870 # 更快的netstat替代方案 lsof -i :9870 # 另一个查看端口占用的命令

10.df -h/free -m— 查看磁盘和内存

bash

df -h free -m
命令组成部分含义
df -hDiskFree(磁盘空闲)+human(人类可读)查看磁盘使用情况
free -mFreememory +megabytes(以MB显示)查看内存使用情况

前端类比

javascript

// df -h 相当于 console.log('硬盘剩余:', diskInfo.free / 1024 / 1024 / 1024, 'GB'); // free -m 相当于 console.log('内存剩余:', memoryInfo.free, 'MB');

实际效果

df -h输出示例:

text

Filesystem Size Used Avail Use% Mounted on /dev/sda1 100G 45G 55G 46% /

free -m输出示例:

text

total used free available Mem: 15985 8232 7753 7123 Swap: 2047 0 2047

面试常问

bash

du -sh /home/hadoop # 查看某个目录占多大空间 df -i # 查看inode使用情况(文件数量限制) free -h # 人类可读格式的内存 cat /proc/meminfo # 查看更详细的内存信息

附:一次性搞定记忆表

命令英文原词一句话解释前端类比
grepGlobal Regular Expression Print搜索关键词filter()
awk作者姓氏取第几列split()+[2]
sedStream Editor替换/删除行replaceAll()
psProcess Status看进程任务管理器
kill杀死结束进程结束任务
tail -fTail + Follow实时看日志console.log
find查找找文件搜索文件
xargs无全称转换参数格式适配器模式
crontabCron Table定时任务setInterval
netstatNetwork Statistics看端口网络连接
dfDisk Free看磁盘硬盘属性
free空闲看内存任务管理器内存

最后的建议

每天练3条,4天就记住了

  • Day1:grep+awk+sed(文本处理铁三角)

  • Day2:ps+kill+tail -f(进程日志铁三角)

  • Day3:find+xargs+crontab(文件定时铁三角)

  • Day4:netstat+df+free(系统监控铁三角)

每条命令自己动手敲5遍,比看10遍都有用!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 20:43:08

VSCode 远程连接服务器 .vscode-server 目录权限冲突排查与修复

1. 为什么会出现.vscode-server权限冲突? 这个问题通常发生在混合使用不同用户权限连接远程服务器时。想象一下这样的场景:你第一次用VSCode连接服务器时,不小心使用了root账户(或者某个高权限账户),这时候…

作者头像 李华
网站建设 2026/5/14 20:42:21

Windows平台实战:借助Cowaxess深度解析Nginx访问日志

1. 为什么需要分析Nginx访问日志? 作为一个运维工程师,我每天都要面对服务器产生的海量日志数据。Nginx的access.log记录了每一个访问请求的详细信息,就像是一本厚厚的访客登记簿。但问题来了:当网站流量达到每天几十万甚至上百万…

作者头像 李华
网站建设 2026/5/14 20:42:20

自动化测试新思路:用ADB命令驱动Qnet进行批量弱网场景验证

自动化测试新思路:用ADB命令驱动Qnet进行批量弱网场景验证 在移动应用开发中,网络环境的多变性一直是测试工程师面临的重大挑战。想象一下,当用户在地铁隧道中刷短视频、在电梯里收发消息、或在拥挤的商场扫码支付时,应用的网络表…

作者头像 李华
网站建设 2026/5/14 20:41:27

AI编程助手技能包实战:自动化邮件服务迁移与Lettr集成指南

1. 项目概述:AI智能体如何帮你搞定邮件发送与迁移 如果你正在用Claude Code、Cursor或者Windsurf这类AI编程助手写代码,并且项目里涉及到发送邮件——无论是用户注册后的欢迎信、密码重置通知,还是订单确认——那你大概率遇到过这个痛点&…

作者头像 李华
网站建设 2026/5/14 20:41:25

问卷设计对比实测:自己做、通用 AI、虎贲等考 AI 差距有多大?学术问卷一次成型才是真强大

在文科、经管、教育、社科类毕业论文与期刊写作中,问卷设计直接决定数据是否有效、论文能否通过。自己设计凭感觉、维度不科学、题项不严谨;通用 AI 只会随意编题,无量表、无信效度,数据根本无法分析;传统工具只能简单…

作者头像 李华