当前位置:首页 > 系统教程 > 正文

Linux高频面试题50道详解

Linux高频面试题50道详解

从基础命令到系统调优,助你轻松斩获运维Offer

Linux高频面试题50道详解 Linux面试题  Linux命令 Linux系统管理 Shell编程 第1张

Linux是后端开发、运维工程师必须掌握的技能,本文整理了50道高频出现的Linux面试题,涵盖Linux命令Linux系统管理Shell编程Linux网络配置等核心领域,答案详尽,适合各阶段开发者查漏补缺。

一、Linux基础命令篇(10题)

1. 如何查看当前系统的发行版信息?

答案:使用 cat /etc/os-releaselsb_release -a 命令,可以显示发行版名称、版本号等。

2. 解释 ls -l 输出中每一列的含义。

答案:第一列文件权限(如-rw-r--r--),第二列硬链接数,第三列所有者,第四列所属组,第五列大小(字节),第六列修改时间,第七列文件名。

3. 如何查找当前目录下所有包含“error”关键字的文件?

答案:使用 grep -r "error" .find . -type f | xargs grep "error"

4. cd ~cd - 分别代表什么?

答案:cd ~ 切换到当前用户的家目录;cd - 切换到上一次所在的目录。

5. 如何查看一个命令的详细帮助文档?

答案:使用 man 命令名命令名 --help,例如 man ls

6. 如何统计当前目录下文件的数量(不包括目录)?

答案:ls -l | grep "^-" | wc -lfind . -maxdepth 1 -type f | wc -l

7. 如何清空一个文件的内容而不删除文件本身?

答案:> filenametruncate -s 0 filename

8. 如何查看当前系统的负载情况?

答案:使用 uptimetop 命令,可以显示系统平均负载(1分钟、5分钟、15分钟)。

9. 如何将标准输出和错误输出同时重定向到一个文件?

答案:command > file 2>&1command &> file

10. 如何查看系统所有环境变量?

答案:envprintenv

二、文件与目录管理篇(10题)

11. 如何创建多级目录?

答案:mkdir -p /path/to/dir,-p 参数会自动创建不存在的父目录。

12. 如何递归复制目录及其内容?

答案:cp -r source_dir target_dir,-r 表示递归复制。

13. 如何移动或重命名文件?

答案:mv oldname newname,可用于移动文件或重命名。

14. 如何删除非空目录?

答案:rm -rf dirname,-r 递归删除,-f 强制删除。

15. 如何查看文件的前10行和后10行?

答案:前10行 head filename,后10行 tail filename,可加 -n 指定行数。

16. 如何实时监控日志文件的更新?

答案:tail -f filename,会持续输出新增内容。

17. 如何查找大文件(例如大于100M的文件)?

答案:find / -type f -size +100M

18. 如何统计一个文件的行数、单词数和字符数?

答案:wc filename,默认输出行数、单词数、字符数。

19. 如何比较两个文件的内容差异?

答案:diff file1 file2vimdiff file1 file2

20. 如何为文件创建软链接和硬链接?

答案:软链接 ln -s target link_name;硬链接 link target link_nameln target link_name

三、权限与用户管理篇(8题)

21. 如何修改文件的所有者和所属组?

答案:chown user:group filename,只改所有者 chown user filename,只改组 chgrp group filename

22. 如何设置文件权限为 rwxr-xr--?

答案:chmod 754 filename,7(所有者rwx),5(组r-x),4(其他人r--)。

23. 如何添加一个新用户并设置家目录?

答案:useradd -m username,-m 会自动创建家目录。

24. 如何修改用户的密码?

答案:passwd username,根据提示输入新密码。

25. 如何将用户添加到sudo组?

答案:usermod -aG sudo username(Debian/Ubuntu)或 usermod -aG wheel username(CentOS/RHEL)。

26. 如何切换用户身份?

答案:su - username 切换并加载环境变量;sudo -i 以root执行。

27. 如何查看当前登录的用户?

答案:whoamiwhow

28. 如何设置文件的特殊权限(SUID、SGID、Sticky)?

答案:SUID chmod u+s file;SGID chmod g+s dir;Sticky chmod o+t dir,也可用数字法如 4755(SUID)。

四、进程与服务管理篇(8题)

29. 如何查看当前系统所有进程?

答案:ps auxtophtop

30. 如何根据进程名杀死进程?

答案:pkill process_namekillall process_name

31. 如何查看某个端口被哪个进程占用?

答案:lsof -i:端口号netstat -tunlp | grep 端口号

32. 如何将进程放到后台运行?

答案:命令后加 &,例如 command &;或运行中按 Ctrl+Z 暂停,再用 bg 放到后台。

33. 如何查看后台作业?

答案:jobs 命令,可以显示后台作业列表。

34. 如何管理系统服务(启动、停止、重启)?

答案:使用 systemctl(现代Linux):systemctl start|stop|restart service_name;旧系统用 service 命令。

35. 如何设置服务开机自启?

答案:systemctl enable service_name;禁用自启 systemctl disable service_name

36. 如何查看进程的CPU和内存占用?

答案:topps aux --sort=-%cpu 按CPU排序。

五、Linux网络配置与诊断篇(6题)

37. 如何查看本机IP地址?

答案:ip addr showifconfig(需安装net-tools)。

38. 如何测试网络连通性?

答案:ping target_host,例如 ping baidu.com

39. 如何查看路由表?

答案:route -nip route show

40. 如何查看DNS配置?

答案:cat /etc/resolv.conf

41. 如何下载网络文件?

答案:wget urlcurl -O url

42. 如何查看当前系统的网络连接状态?

答案:netstat -anss -an

六、Shell编程与脚本篇(5题)

43. 如何定义一个Shell变量并引用?

答案:定义 var=value(等号两边无空格),引用 $var${var}

44. 如何获取Shell脚本的参数?

答案:$0 脚本名,$1 第一个参数,$2 第二个,$# 参数个数,$@ 所有参数。

45. 如何写一个for循环遍历当前目录下的所有.txt文件?

答案:for file in *.txt; do echo $file; done

46. 如何判断一个文件是否存在?

答案:if [ -f /path/to/file ]; then echo exists; fi

47. 如何定义函数?

答案:function_name() { commands; }function function_name { commands; }

七、系统性能与监控篇(3题)

48. 如何查看系统内存使用情况?

答案:free -h 显示内存总量、已用、空闲等。

49. 如何查看磁盘分区使用情况?

答案:df -h 显示各分区使用情况。

50. 如何查看系统启动时间和运行时间?

答案:uptimewho -b 查看系统启动时间。

总结:以上50道Linux面试题覆盖了日常运维和开发中90%以上的场景,熟练掌握这些Linux命令和原理,能显著提升面试通过率。建议结合Linux系统管理Shell编程等实践加深理解,并在Linux网络配置方面多动手实验。