2025年4月8日

Linux 操作命令高频面试50题

作者 codecafe

以下是 50 道 Linux 操作命令的高频面试题,涵盖文件操作、权限管理、进程监控、网络配置和系统管理。每道题包括问题、答案、解释、追问及追问答案,内容由浅入深,基于标准 Linux 实践整理,确保准确性,适合系统管理员、DevOps 工程师等角色的面试准备。

基础命令

1. 如何在 Linux 中切换到用户的主目录?

答案
使用 cd ~cd(无参数时默认切换到主目录)。
解释
~ 是用户主目录的符号链接(通常是 /home/username),cd ~ 能快速跳转到当前用户的主目录。cd 单独使用时,默认返回主目录,简单又实用。
追问:如果我想切换到另一个用户的主目录,该怎么做?
追问答案
使用 cd ~username,例如 cd ~john 切换到用户 john 的主目录(需要有访问权限)。

2. 如何列出当前目录下的所有文件和目录,包括隐藏文件?

答案
使用 ls -a
解释
ls 列出目录内容,-a(all)选项显示所有文件,包括以 . 开头的隐藏文件(如 .bashrc)。这是查看配置文件时的常用命令。
追问:如果想以详细列表形式显示文件信息,包括权限、所有者等,该怎么做?
追问答案
使用 ls -l 显示详细信息,或 ls -la 同时显示隐藏文件和详细信息,输出包括权限、所有者、时间等。

3. 如何复制一个文件到另一个目录?

答案
使用 cp source_file destination_directory,例如 cp file.txt /tmp
解释
cp(copy)用于复制文件,指定源文件和目标目录。常用于备份或文件迁移。
追问:如果想复制整个目录,包括子目录,该怎么做?
追问答案
使用 cp -r source_directory destination_directory-r(recursive)选项递归复制目录及其内容。

4. 如何删除一个目录及其所有内容?

答案
使用 rm -r directory_name
解释
rm(remove)删除文件或目录,-r 选项递归删除目录及其所有子目录和文件。小心使用,避免误删!
追问:如果想在删除前确认每个文件,该怎么做?
追问答案
使用 rm -ri directory_name-i(interactive)选项会提示确认每个文件是否删除。

5. 如何查看文件的开头几行?

答案
使用 head -n number file_name,例如 head -n 5 file.txt 查看前 5 行。
解释
head 显示文件开头部分,-n 指定行数,常用于快速预览文件内容。
追问:如果想查看文件的结尾几行,该怎么做?
追问答案
使用 tail -n number file_name,例如 tail -n 5 file.txt 查看最后 5 行。

6. 如何搜索文件中包含特定关键词的行?

答案
使用 grep "keyword" file_name,例如 grep "error" log.txt
解释
grep(global regular expression print)搜索文件中匹配关键词的行,常用于日志分析。
追问:如果想忽略大小写,该怎么做?
追问答案
使用 grep -i "keyword" file_name-i(ignore case)选项忽略大小写。

7. 如何修改文件权限,使所有者有读写执行权限,组有读执行权限,其他人有读权限?

答案
使用 chmod 755 file_name
解释
chmod(change mode)修改权限,755 表示所有者有 rwx(7=4+2+1),组有 r-x(5=4+1),其他人有 r–(4)。
追问:如果想用符号表示法,该怎么写?
追问答案
使用 chmod u=rwx,g=rx,o=r file_name,效果与 755 相同。

8. 如何查找系统中所有名为“httpd.conf”的文件?

答案
使用 find / -name "httpd.conf"
解释
find 从指定路径(/ 为根目录)搜索文件,-name 指定文件名模式,常用于定位配置文件。
追问:如果只想在 /etc 目录下搜索,该怎么做?
追问答案
使用 find /etc -name "httpd.conf",限制搜索范围到 /etc。

9. 如何终止一个正在运行的进程?

答案
先用 ps auxtop 找到进程的 PID,然后用 kill PID 终止。
解释
kill 发送信号给进程,PID 是进程的唯一标识,默认发送 TERM 信号终止进程。
追问:如果进程没有响应,如何强制终止?
追问答案
使用 kill -9 PID-9(SIGKILL)强制终止进程。

10. 如何压缩一个目录并生成 .tar.gz 文件?

答案
使用 tar -czvf archive.tar.gz directory_name
解释
tar 用于打包,-c 创建归档,-z 使用 gzip 压缩,-v 显示过程,-f 指定文件名。
追问:如果想解压这个文件,该怎么做?
追问答案
使用 tar -xzvf archive.tar.gz-x 表示解压。

11. 如何查看当前系统的 IP 地址?

答案
使用 ifconfigip addr show
解释
ifconfig 是传统工具,显示网络接口信息;ip addr show 是现代 iproute2 工具的一部分,功能更强大。
追问:如果想查看特定网络接口的 IP 地址,该怎么做?
追问答案
使用 ifconfig eth0ip addr show dev eth0,指定接口名(如 eth0)。

12. 如何安装一个 RPM 包?

答案
使用 rpm -ivh package.rpm
解释
rpm 是 Red Hat 包管理工具,-i 安装,-v 显示详细信息,-h 显示进度条。
追问:如果想升级已安装的 RPM 包,该怎么做?
追问答案
使用 rpm -Uvh package.rpm-U 表示升级。

13. 如何查看系统日志?

答案
使用 less /var/log/messagesjournalctl(systemd 系统)。
解释
/var/log/messages 是传统日志文件,journalctl 是 systemd 的日志管理工具,功能更强大。
追问:如果想查看特定服务的日志,该怎么做?
追问答案
使用 journalctl -u service_name,例如 journalctl -u apache2.service

14. 如何创建一个软链接?

答案
使用 ln -s target_link_name link_name
解释
ln -s 创建符号链接(软链接),指向目标文件或目录,类似 Windows 的快捷方式。
追问:软链接和硬链接有什么区别?
追问答案
硬链接直接指向文件 inode,软链接指向目标路径;删除目标文件后,软链接失效,硬链接仍有效。

15. 如何查看当前系统的内存使用情况?

答案
使用 free -m,以 MB 显示内存使用情况。
解释
free 显示内存和交换空间使用情况,-m 选项以 MB 为单位,方便阅读。
追问:如果想查看更详细的内存信息,该怎么做?
追问答案
使用 vmstattoptop 提供实时内存使用视图。

16. 如何挂载一个 USB 设备?

答案
先识别设备(如 /dev/sdb1),然后使用 mount /dev/sdb1 /mnt
解释
mount 将文件系统挂载到指定目录,/mnt 是常用挂载点。
追问:挂载后如何卸载?
追问答案
使用 umount /dev/sdb1umount /mnt

17. 如何查看当前系统的用户列表?

答案
使用 whow
解释
who 显示当前登录用户,w 显示更详细的信息,如登录时间和活动。
追问:如果想查看所有用户(包括未登录的),该怎么做?
追问答案
使用 cat /etc/passwd,显示系统中的所有用户账户信息。

18. 如何创建一个新用户?

答案
使用 useradd username
解释
useradd 创建新用户账户,通常需要后续设置密码。
追问:创建用户后如何设置密码?
追问答案
使用 passwd username,为用户设置密码。

19. 如何查看磁盘空间使用情况?

答案
使用 df -h,以人类可读格式显示磁盘空间使用情况。
解释
df(disk free)显示文件系统磁盘使用情况,-h 以 GB、MB 等单位显示。
追问:如果想查看特定目录的大小,该怎么做?
追问答案
使用 du -sh directory_name-s 显示总大小,-h 以人类可读格式显示。

20. 如何备份一个目录?

答案
使用 tar -czvf backup.tar.gz directory_name
解释
tar 打包目录,-c 创建归档,-z 使用 gzip 压缩,-v 显示过程,-f 指定文件名。
追问:如果想排除某些文件或目录,该怎么做?
追问答案
使用 --exclude=pattern,例如 tar -czvf backup.tar.gz --exclude=*.log directory_name

中级命令

21. 如何查看进程的 CPU 和内存使用情况?

答案
使用 top,按下 1 键救助查看单个进程。
解释
top 实时显示系统资源使用情况,CPU 和内存信息清晰可见。
追问:如果想查看特定进程的详细信息,该怎么做?
追问答案
使用 ps -p PID -o pid,vsz,rss,cmd,查看进程的虚拟内存、物理内存和命令。

22. 如何设置 cron 任务定期执行脚本?

答案
使用 crontab -e,添加类似 0 2 * * * /path/to/script.sh 的条目。
解释
cron 调度任务,格式为分钟、小时、日期、月份、星期、命令,每天 2 点执行脚本。
追问:如果只想在周一到周五执行任务,该怎么设置?
追问答案
使用 0 2 * * 1-5 /path/to/script.sh,星期字段 1-5 表示周一到周五。

23. 如何查找并杀死占用特定端口的进程?

答案
使用 lsof -i :portnetstat -tuln | grep port 查找 PID,然后用 kill PID 终止。
解释
lsofnetstat 显示端口占用情况,kill 终止进程。
追问:如果进程没有响应,如何强制终止?
追问答案
使用 kill -9 PID-9(SIGKILL)强制终止。

24. 如何查看系统启动时间?

答案
使用 who -buptime
解释
who -b 显示系统启动时间,uptime 显示运行时间和负载平均值。
追问:如果想查看系统的负载平均值,该怎么做?
追问答案
uptime 直接显示负载平均值(1、5、15 分钟的平均值)。

25. 如何创建一个空文件?

答案
使用 touch file_name
解释
touch 创建空文件或更新文件时间戳,简单高效。
追问:如果想创建包含特定内容的文件,该怎么做?
追问答案
使用 echo "content" > file_namecat > file_name 输入内容。

26. 如何查看文件的权限?

答案
使用 ls -l file_name,查看文件属性字符串。
解释
文件属性字符串的前 10 个字符表示文件类型和权限(如 -rwxr-xr-x)。
追问:权限字符串中的每个字符代表什么?
追问答案
第一个字符表示文件类型(- 文件,d 目录,l 链接),后九个字符分三组,表示所有者、组、其他人的读(r)、写(w)、执行(x)权限。

27. 如何重定向标准输出到文件?

答案
使用 command > file_name,例如 ls > output.txt
解释
> 将标准输出重定向到文件,覆盖原有内容。
追问:如果想追加到文件而不是覆盖,该怎么做?
追问答案
使用 >>,例如 ls >> output.txt

28. 如何管道命令,将一个命令的输出作为另一个命令的输入?

答案
使用 |,例如 ls -l | grep "keyword"
解释
管道将前一个命令的输出传递给后一个命令,适合数据处理。
追问:管道可以连接多个命令吗?
追问答案
是的,例如 ls | grep "txt" | sort,依次传递输出。

29. 如何查看当前目录下的所有文件,但不包括子目录?

答案
使用 ls -p | grep -v /find . -maxdepth 1 -type f
解释
ls -p 在目录后加 /grep -v / 排除目录;find 指定最大深度和文件类型。
追问:如果想包括子目录的所有文件,该怎么做?
追问答案
使用 find . -type f,查找所有文件。

30. 如何解压一个 .zip 文件?

答案
使用 unzip file.zip
解释
unzip 是专门解压 zip 文件的工具,简单易用。
追问:如果是 .tar.gz 文件,该怎么解压?
追问答案
使用 tar -xzvf file.tar.gz-x 解压,-z 使用 gzip。

31. 如何查看当前系统的内核版本?

答案
使用 uname -r
解释
uname 显示系统信息,-r 选项显示内核版本。
追问:如果想查看操作系统类型,该怎么做?
追问答案
使用 uname -s,显示操作系统名称,如 Linux。

32. 如何列出当前目录下的所有文件,但只显示文件名?

答案
使用 ls(无选项)。
解释
ls 默认只列出文件名,不包括详细信息。
追问:如果只想显示文件名,不包括目录,该怎么做?
追问答案
使用 ls -p | grep -v /find . -maxdepth 1 -type f -printf "%f\n"

33. 如何查看一个文件的第一行?

答案
使用 head -n 1 file_name
解释
head 显示文件开头,-n 1 指定第一行。
追问:如果想查看文件的最后一行,该怎么做?
追问答案
使用 tail -n 1 file_name

34. 如何在 Linux 中安装软件包?

答案
在 Debian/Ubuntu 使用 apt-get install package_name,在 Red Hat/CentOS 使用 yum install package_name
解释
不同发行版使用不同的包管理工具,apt-getyum 是最常见的。
追问:如果想更新所有软件包,该怎么做?
追问答案
Debian/Ubuntu 使用 apt-get update && apt-get upgrade,Red Hat/CentOS 使用 yum update

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

答案
使用 whoami
解释
whoami 显示当前用户的用户名,简单直接。
追问:如果想查看所有登录用户,该怎么做?
追问答案
使用 whow,显示当前登录用户列表及详细信息。

36. 如何切换到根目录?

答案
使用 cd /
解释
/ 是文件系统的根目录,包含所有其他目录。
追问:根目录和用户主目录有什么区别?
追问答案
根目录是文件系统顶层目录(/),用户主目录是个人目录(如 /home/username)。

37. 如何创建一个新目录?

答案
使用 mkdir directory_name
解释
mkdir(make directory)创建新目录,简单高效。
追问:如果想创建多级目录,该怎么做?
追问答案
使用 mkdir -p path/to/directory-p 创建所有必要的父目录。

38. 如何查看一个文件的类型?

答案
使用 file file_name
解释
file 识别文件类型,如文本、可执行文件或图片等。
追问:如果是二进制文件,如何查看内容?
追问答案
使用 hexdump -C file_name,显示文件的十六进制表示。

39. 如何查找一个文件的路径?

答案
使用 which command_namelocate file_name
解释
which 查找可执行文件的路径,locate 查找任何文件,依赖数据库。
追问locatefind 的区别是什么?
追问答案
locate 使用数据库快速查找,find 实时搜索文件系统,速度较慢但更准确。

40. 如何将文件内容输出到屏幕?

答案
使用 cat file_name
解释
cat(concatenate)将文件内容输出到标准输出,适合快速查看。
追问:如果文件很大,想分页查看,该怎么做?
追问答案
使用 less file_namemore file_name,支持分页浏览。

高级命令

41. 如何查看当前目录下所有文件的总大小?

答案
使用 du -sh *
解释
du 显示目录大小,-s 显示总计,-h 以人类可读格式(如 GB、MB)显示。
追问:如果想查看递归子目录的大小,该怎么做?
追问答案
使用 du -h,显示每个子目录的大小。

42. 如何在 Linux 中设置环境变量?

答案
使用 export VAR_NAME=value,例如 export PATH=$PATH:/new/path
解释
export 设置环境变量,可被子进程继承,常用于配置工具路径。
追问:环境变量和 shell 变量的区别是什么?
追问答案
环境变量可被子进程继承,shell 变量仅在当前 shell 有效。

43. 如何查看系统的 CPU 使用情况?

答案
使用 topmpstat
解释
top 实时显示 CPU 和内存使用,mpstat 提供详细的 CPU 统计信息。
追问:如果想查看历史 CPU 使用情况,该怎么做?
追问答案
使用 sar,显示系统活动报告,包括 CPU 使用历史。

44. 如何创建文本文件并写入内容?

答案
使用 echo "content" > file_name
解释
echo 输出字符串,> 重定向到文件,覆盖原有内容。
追问:如果想追加内容到文件,该怎么做?
追问答案
使用 >>,例如 echo "more content" >> file_name

45. 如何删除一个空目录?

答案
使用 rmdir directory_name
解释
rmdir 只删除空目录,安全且简单。
追问:如果目录不为空,该怎么删除?
追问答案
使用 rm -r directory_name,递归删除目录及其内容。

46. 如何查看文件的最后修改时间?

答案
使用 ls -l file_name,查看文件属性字符串中的日期。
解释
文件属性字符串中的日期表示最后修改时间,格式清晰。
追问:如果想查看文件的访问时间,该怎么做?
追问答案
使用 ls -lu file_name,显示最后访问时间。

47. 如何列出所有打开的文件描述符?

答案
使用 lsof
解释
lsof(list open files)列出所有打开的文件,包括网络连接和设备。
追问:如果只想查看特定用户的打开文件,该怎么做?
追问答案
使用 lsof -u username,例如 lsof -u root

48. 如何挂载一个 ISO 文件?

答案
使用 mount -o loop file.iso /mnt
解释
-o loop 将 ISO 文件作为循环设备挂载,适合访问光盘镜像。
追问:挂载后如何卸载?
追问答案
使用 umount /mnt

49. 如何查看当前系统的 swap 使用情况?

答案
使用 swapon -sfree -m
解释
swapon -s 显示交换分区信息,free -m 显示内存和交换空间使用情况。
追问:如果想禁用 swap,该怎么做?
追问答案
使用 swapoff -a,禁用所有交换分区。

50. 如何在 Linux 中设置防火墙规则?

答案
使用 iptables,例如 iptables -A INPUT -p tcp --dport 80 -j ACCEPT
解释
iptables 配置网络包过滤规则,控制流量,-A 添加规则,-j ACCEPT 允许流量。
追问:如何保存 iptables 规则?
追问答案
使用 iptables-save > /etc/iptables.rules,并配置系统自动加载。

关键引用