linux命令面试
linux命令面试详细介绍
在 Linux 命令相关的面试中,面试官通常会考察基础命令的熟练程度、复杂场景的处理能力以及对系统原理的理解。以下是常见的面试问题分类及核心知识点,结合实际场景帮助你梳理重点:
一、文件与目录操作
1. 基础文件操作命令(必考)
- 查看文件内容:
cat(显示全部)、more(分页)、less(可搜索,推荐)、head/tail(查看首尾)、nl(带行号)
▶ 问:如何实时监控日志文件更新?
答:tail -f /path/to/log或tail -n 100 -f /path/to/log(显示最后 100 行并监控)。 - 文件 / 目录查找:
find(精确查找,支持复杂条件)、locate(基于数据库,快速但需更新)、which(找命令路径)、whereis(找命令及手册)
▶ 问:如何查找/var/log目录下 7 天前修改、大于 100MB 的日志文件并删除?
答:find /var/log -type f -mtime +7 -size +100M -exec rm {} \;。 - 文件编辑:
vim(必考)的模式切换(命令模式、插入模式、底行模式),常用操作(复制 / 粘贴 / 删除行,搜索替换,多文件编辑)。
2. 权限与用户管理
- 权限命令:
chmod(修改权限,数字法如755,符号法如u+x)、chown(修改所有者 / 组)、chgrp(改组)
▶ 问:如何让用户 A 拥有文件test.txt的读写执行权,用户组和其他用户只有读权限?
答:chmod u=rwx,g=rx,o=rx test.txt或chmod 755 test.txt。 - 用户 / 组操作:
useradd/userdel、groupadd/groupdel、usermod(修改用户属性)、id(查看用户信息)。
二、进程与系统监控
1. 进程管理
- 查看进程:
ps(静态,如ps aux查看所有进程,ps -ef显示完整格式)、top(动态,可交互,按M按内存排序,P按 CPU 排序)、htop(增强版,可视化)
▶ 问:ps aux和ps -ef有什么区别?
答:前者是 BSD 格式,后者是 System V 格式,主要区别在于用户、PID、父 PID 等字段的显示方式。 - 终止进程:
kill(常用kill -9 PID强制终止)、pkill(按名称杀进程,如pkill -9 java)。 - 后台任务:
&(后台运行,如command &)、nohup(忽略挂断信号)、jobs(查看后台任务)、fg/bg(前后台切换)。
2. 系统资源监控
- 性能指标:
top(CPU / 内存)、free(内存使用,推荐free -h)、df(磁盘空间,df -h)、du(目录大小,du -sh /path)、vmstat(虚拟内存统计)、iostat(磁盘 I/O)。
▶ 问:如何查看占用 CPU 最高的 5 个进程?
答:top按P排序,或ps aux --sort=-%cpu | head -n 6。 - 端口与网络:
netstat(网络统计,如netstat -tunlp查看监听端口)、ss(更高效,推荐)、lsof -i :端口(查看端口占用)、nmap(端口扫描)。
▶ 问:如何排查 8080 端口被哪个进程占用?
答:ss -tunlp | grep :8080或lsof -i :8080。
三、文本处理与管道
1. 文本处理三剑客(核心!)
grep:搜索匹配文本(如grep 'error' log.txt,-v反向匹配,-r递归搜索目录)。
▶ 问:如何在/var/log目录下所有.log文件中搜索包含"ERROR"且不包含"WARNING"的行?
答:grep 'ERROR' /var/log/*.log | grep -v 'WARNING'。awk:按列处理文本(如awk '{print $1}' file打印第一列,NR行号,NF列数)。
▶ 问:如何统计日志文件中每个 IP 的访问次数并按次数降序排列?
答:awk '{print $1}' access.log | sort | uniq -c | sort -nr。sed:流编辑(如sed 's/old/new/g' file替换,-i直接修改文件,d删除行,p打印)。
▶ 问:如何删除文件中所有以#开头的注释行?
答:sed -i '/^#/d' config.conf。
2. 管道与重定向
- 管道
|(传递前一个命令的输出给后一个)、重定向>(覆盖)/>>(追加)、错误重定向2>/&>(合并输出)。
▶ 问:如何将命令的正确输出和错误输出分别写入不同文件?
答:command > stdout.log 2> stderr.log。
四、软件包与系统服务
1. 软件包管理
- Debian 系(如 Ubuntu):
apt-get install/remove/update、dpkg -i(安装.deb 包)。 - RedHat 系(如 CentOS):
yum install/remove/update、rpm -ivh(安装.rpm 包)、dnf(CentOS 8+)。 - 通用工具:
tar(压缩解压,如tar -zcvf file.tar.gz dir/,-xzvf解压)、wget/curl(下载文件)。
2. 服务管理
- Systemd(主流):
systemctl start/stop/restart/enable/disable/status 服务名(如systemctl status sshd)。 - 传统 init 脚本:
service 服务名 操作(如service httpd restart,逐渐淘汰)。
五、进阶问题与场景题
1. 实战场景(高频考点)
- 问题 1:服务器磁盘空间满了,如何快速定位大文件?
答:df -h确认分区占用 →du -sh /var/*(逐层排查大目录)→find / -size +1G 2>/dev/null(找大于 1GB 的文件)。 - 问题 2:如何统计日志文件中状态码为 404 的请求次数?
答:grep ' 404 ' access.log | wc -l(假设状态码前有空格)。 - 问题 3:如何将两个文件按第一列合并?
答:join file1 file2(要求文件已按第一列排序,或用sort预处理)。
2. 原理与优化
- 问:
find和locate的区别?
答:find实时遍历文件系统(慢但准确),locate依赖数据库(快,需定期更新updatedb)。 - 问:为什么不建议用
kill -9终止进程?
答:-9是强制终止,可能导致数据丢失或资源未释放,应优先用kill(默认-15,允许进程优雅退出)。
六、备考建议
- 动手实践:在 Linux 环境中反复练习,结合实际场景(如模拟日志分析、进程排查)。
- 理解参数:不要死记硬背,理解每个参数的逻辑(如
-r递归,-v反向,-n显示行号)。 - 关注输出:面试常问 “某命令的输出字段含义”(如
top的%CPU、free的buff/cache),需明确各指标意义。 - 总结套路:文本处理(过滤→统计→排序)、进程排查(定位 PID→分析资源→终止)等场景的通用解法。
通过以上梳理,结合具体命令的实际应用案例,能更高效地应对面试中的 Linux 命令问题。重点关注高频场景和易混淆点(如chmod数字与符号模式、ps不同格式参数),并尝试用 “问题→步骤→命令” 的逻辑组织回答。