常见 Linux 面试题大汇总,助你轻松应对面试

常见 Linux 面试题大汇总,助你轻松应对面试 - 图1

在技术飞速发展的当下,Linux 系统凭借其稳定、高效、开源等优势,在服务器领域、嵌入式开发、云计算等众多场景中占据着举足轻重的地位。对于从事 IT 相关工作的小伙伴们来说,掌握 Linux 知识是必不可少的技能,而在各类技术面试中,Linux 相关题目也常常高频出现。今天,小编就为大家整理了一些常见的 Linux 面试题,希望能帮助大家更好地备考,轻松应对面试。

一、基础命令类

1. 常见的文件和目录操作命令有哪些?请说明它们的用途。

在 Linux 系统中,文件和目录操作是最基础也是最常用的操作。常见的命令有ls、cd、mkdir、rmdir、cp、mv、rm等。

  • ls:用于列出指定目录下的文件和目录信息。可以通过不同的选项来显示详细信息,比如-l显示长列表格式,-a显示包括隐藏文件在内的所有文件。

  • cd:用于切换当前工作目录。例如cd /home可以切换到 home 目录,cd ..可以切换到上一级目录。

  • mkdir:用于创建新的目录,如mkdir test创建名为 test 的目录。

  • rmdir:用于删除空目录,注意只能删除空目录,若目录中有文件则无法删除。

  • cp:用于复制文件或目录,cp file1 file2复制 file1 到 file2,-r选项可用于复制目录。

  • mv:用于移动文件或目录,也可用于重命名文件或目录,如mv file1 file2将 file1 重命名为 file2 或移动到指定位置。

  • rm:用于删除文件或目录,-r选项可删除目录,-f选项强制删除,不询问确认。

2. 如何查看文件的内容?有哪些常用命令,它们的区别是什么?

查看文件内容的常用命令有cat、more、less、head、tail等。

  • cat:用于显示文件的全部内容,直接将文件内容输出到终端,适合查看较小的文件。

  • more:分页显示文件内容,按空格键向下翻页,按回车键向下滚动一行,适合查看较大的文件,但只能向前翻页。

  • less:功能比 more 更强大,支持向前和向后翻页,可使用方向键滚动,还可以搜索内容,按/输入关键词进行搜索。

  • head:默认显示文件的前 10 行内容,可通过-n选项指定显示的行数,如head -n 20 file显示文件前 20 行。

  • tail:默认显示文件的最后 10 行内容,同样可通过-n选项指定显示行数,-f选项可实时监控文件的更新,常用于查看日志文件。

二、系统管理类

1. 如何查看 Linux 系统的版本信息?

可以通过以下几种方式查看系统版本信息:

  • cat /etc/os-release:显示系统发行版的详细信息,包括名称、版本号、ID 等。

  • lsb_release -a:如果系统安装了 lsb-release 包,该命令可显示系统的发行版信息。

  • uname -a:显示系统的内核版本、主机名、硬件架构等信息。

2. 如何查看当前系统的进程?如何终止一个进程?

查看进程的常用命令有ps和top。

  • ps aux:显示所有用户的进程信息,包括进程 ID(PID)、CPU 使用率、内存使用率等。

  • top:实时动态地显示系统中各个进程的资源占用情况,可按键盘上的快捷键进行交互,如按q退出。

终止进程常用kill命令,根据进程 ID 来终止进程。首先通过ps aux找到需要终止的进程的 PID,然后使用kill PID命令终止进程。如果进程没有及时终止,可以使用kill -9 PID强制终止进程。

3. 如何创建一个新用户,并为其设置密码?如何删除一个用户?

创建新用户使用useradd命令,具体步骤如下:

  • useradd username:创建名为 username 的用户,默认会在 /home 目录下创建一个同名的用户主目录。

  • passwd username:为该用户设置密码,按照提示输入新密码并确认。

删除用户使用userdel命令:

  • userdel username:删除用户,但不会删除用户的主目录和相关文件。

  • userdel -r username:删除用户的同时,删除其主目录和相关文件。

三、网络相关

1. 如何查看网络连接状态?常用的命令有哪些?

查看网络连接状态的常用命令有netstat、ss、lsof等。

  • netstat -anp:显示所有活动的网络连接,包括 TCP 和 UDP 连接,-a显示所有连接和监听端口,-n以数字形式显示 IP 地址和端口号,-p显示对应的进程信息。

  • ss -antup:功能与 netstat 类似,但比 netstat 更高效,-a显示所有套接字,-n数字格式,-t TCP 连接,-u UDP 连接,-p显示进程。

  • lsof -i:列出所有打开的网络连接以及对应的进程信息。

2. 如何测试网络连通性?常用的工具是什么?

测试网络连通性常用的工具是ping,通过向目标 IP 地址发送 ICMP 回声请求数据包,来检测网络是否可达。例如ping192.168.1.1,默认会一直 ping,可按Ctrl+C停止。此外,traceroute(Linux 下)或tracert(Windows 下)可以追踪数据包从源主机到目标主机所经过的路由节点,用于分析网络路径中的问题。

3. 如何查看本机的 IP 地址?

可以使用以下命令查看本机 IP 地址:

  • ifconfig(需要安装 net-tools 包):显示网络接口的详细信息,包括 IP 地址、子网掩码、广播地址等。

  • ip addr:现代 Linux 系统推荐使用的命令,功能与 ifconfig 类似,显示网络接口的配置信息。

四、服务与应用类

1. 如何启动、停止、重启和查看服务状态?以 systemd 为例。

在使用 systemd 作为初始化系统的 Linux 发行版(如 CentOS 7 及以上、Ubuntu 16.04 及以上)中,管理服务的常用命令如下:

  • systemctl start service_name:启动服务。

  • systemctl stop service_name:停止服务。

  • systemctl restart service_name:重启服务。

  • systemctl status service_name:查看服务的状态,包括是否正在运行、启动时间等信息。

  • systemctl enable service_name:设置服务开机自启动。

  • systemctl disable service_name:取消服务开机自启动。

2. 如何安装一个软件包?以 Debian/Ubuntu 和 RedHat/CentOS 为例。

  • 在 Debian/Ubuntu 系统中,常用apt包管理工具:

  • apt update:更新软件包列表。

  • apt install package_name:安装指定的软件包。

  • apt remove package_name:移除软件包,不删除配置文件。

  • apt purge package_name:彻底移除软件包,包括配置文件。

  • 在 RedHat/CentOS 系统中,常用yum(CentOS 7 及以下)或dnf(CentOS 8 及以上)包管理工具:

  • yum update/dnf update:更新系统和软件包。

  • yum install package_name/dnf install package_name:安装软件包。

  • yum remove package_name/dnf remove package_name:移除软件包。

3. 如何配置 SSH 服务,允许远程登录?

首先确保 SSH 服务已经安装,在 Debian/Ubuntu 中可以通过apt install openssh-server安装,在 RedHat/CentOS 中可以通过yum install openssh-server安装。然后编辑 SSH 配置文件/etc/ssh/sshd_config,主要配置项如下:

  • Port 22:设置 SSH 服务的端口号,默认是 22。

  • PermitRootLogin yes/no:允许或禁止 root 用户直接登录,建议设置为 no,以提高安全性。

  • PasswordAuthentication yes/no:是否允许密码认证,也可以使用密钥认证。

修改配置文件后,重启 SSH 服务使配置生效,systemctl restart sshd(RedHat/CentOS)或systemctl restart ssh(Debian/Ubuntu)。

五、安全与权限类

1. Linux 文件系统的权限分为哪几类?如何设置文件和目录的权限?

Linux 文件系统的权限分为读(r)、写(w)、执行(x)三类,分别对应文件所有者、所属组和其他用户。可以使用chmod命令来设置文件和目录的权限,有两种方式:

  • 数字方式:将权限转换为数字,r=4,w=2,x=1,例如chmod 755 file表示所有者具有读、写、执行权限,所属组和其他用户具有读、执行权限。

  • 符号方式:使用u(所有者)、g(所属组)、o(其他用户)、a(所有用户)来指定用户类别,+、-、=来添加、删除或设置权限,如chmod u+x file给所有者添加执行权限。

2. 如何查看和修改文件的所有者和所属组?

查看文件的所有者和所属组可以通过ls -l命令,显示的长列表中第一列之后的用户名和组名就是所有者和所属组。修改文件的所有者使用chown命令,chown new_owner file;修改所属组使用chgrp命令,chgrp new_group file,也可以使用chown :new_group file同时修改所属组。

3. 如何防止他人篡改系统文件?

可以通过设置文件的特殊权限来防止他人篡改系统文件,例如使用chattr命令设置不可变标志。chattr +i file使文件不可被修改、删除、重命名或创建链接,只有 root 用户可以设置和取消该标志。此外,还可以通过权限设置,确保只有授权的用户或组对系统文件有写权限,同时定期检查系统文件的完整性,使用如rpm -V(RedHat/CentOS)或dpkg -S(Debian/Ubuntu)等工具。

六、性能优化与故障排查

1. 如何查看系统的 CPU、内存和磁盘使用情况?

  • CPU 使用情况:可以使用top、htop(需要安装)或nmon等工具实时查看 CPU 的使用率、各个进程对 CPU 的占用情况。top命令中,% CPU 列显示进程对 CPU 的占用百分比。

  • 内存使用情况:free -h命令以人类可读的格式显示内存的使用情况,包括总内存、已用内存、空闲内存、缓冲区和缓存等。top和htop也可以显示内存的使用情况。

  • 磁盘使用情况:df -h查看磁盘分区的空间使用情况,显示每个分区的总容量、已用空间、可用空间和挂载点。du -sh directory查看指定目录的大小,用于查找占用磁盘空间较大的文件或目录。

2. 当系统运行缓慢时,如何排查问题?

当系统运行缓慢时,可以按照以下步骤排查:

  • 首先使用top或htop查看 CPU 和内存的使用情况,确定是否有占用大量资源的进程。如果有异常进程,可进一步分析该进程的行为,必要时终止进程。

  • 检查磁盘 I/O 情况,使用iostat命令查看磁盘的读写速率、队列长度等,判断是否存在磁盘瓶颈。

  • 查看网络带宽使用情况,使用nload、iftop等工具查看各个网络接口的带宽占用,是否有大量的数据传输导致网络拥堵。

  • 检查系统日志,如/var/log/syslog(Debian/Ubuntu)、/var/log/messages(RedHat/CentOS)等,查看是否有相关的错误或警告信息,帮助定位问题。

3. 如何分析日志文件?

分析日志文件可以使用文本处理命令,如grep、awk、sed等。例如,使用grep “关键词” logfile查找包含特定关键词的日志条目;使用awk ‘{print $1}’ logfile提取日志中的第一列内容;使用sed ‘s/旧内容/新内容/g’ logfile替换日志中的内容。对于复杂的日志分析,还可以使用专门的日志分析工具,如 ELK(Elasticsearch、Logstash、Kibana)栈,实现日志的收集、存储、分析和可视化。以上就是为大家整理的常见 Linux 面试题,涵盖了基础命令、系统管理、网络、服务配置、安全与权限、性能优化等多个方面。当然,Linux 的知识体系非常庞大,面试题也会根据不同的岗位和要求有所侧重,大家在备考时还需要结合自己的实际情况,有针对性地进行学习和复习。希望这些题目能帮助大家在面试中脱颖而出,顺利拿到心仪的 offer!如果大家还有其他想了解的 Linux 知识或面试技巧,欢迎在评论区留言哦!