【Linux 面试救命包】50 个问题吃透核心考点!

2025-05-12 09:22:18 RAIZ

一、Linux 基础操作

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

答案:使用uname -r命令,uname用于打印系统信息,-r参数专门用于显示内核版本号。

Linux 中文件系统的根目录是什么?

答案:根目录是/,它是整个文件系统的顶级目录,所有其他目录和文件都挂载在它之下。

如何创建一个新的空文件?

答案:可以使用touch命令,例如touch new_file.txt ;也可以使用> new_file.txt,通过重定向创建空文件。

如何列出目录下的所有文件和子目录(包括隐藏文件)?

答案:使用ls -a命令,-a参数表示显示所有文件,包括以.开头的隐藏文件。

如何切换目录?

答案:使用cd命令,例如cd /home切换到/home目录;cd..返回上一级目录;cd ~切换到用户主目录 。

二、文件管理与权限

如何复制文件和目录?

答案:复制文件使用cp命令,如cp source_file target_file;复制目录使用cp -r-r表示递归复制目录及其子目录和文件,例如cp -r source_dir target_dir

如何移动或重命名文件?

答案:使用mv命令,当源文件和目标文件在同一目录下时,是重命名操作,如mv old_name new_name;当源文件和目标文件在不同目录时,是移动操作,如mv /path/source_file /new_path/

如何删除文件和目录?

答案:删除文件使用rm命令,如rm file.txt;删除目录使用rm -r,如rm -r dir_name;若要强制删除(不提示确认),可使用rm -f(文件)或rm -rf(目录) 。

Linux 文件权限有哪些,如何修改?

答案:文件权限包括读(r)、写(w)、执行(x)三种,分别对应数字 4、2、1。对于文件所有者、所属组和其他用户都有独立的权限设置。修改权限使用chmod命令,例如chmod 755 file.txt表示给文件所有者读写执行权限,给所属组和其他用户读执行权限;也可以使用字母形式,如chmod u+rwx,g+rx,o+rx file.txt 。

如何查看文件内容?

答案:可以使用cat(一次性显示整个文件内容)、more(分页显示,按空格键翻页)、less(功能更强大的分页查看,支持搜索等,按q退出)、head(显示文件前几行,默认前 10 行,如head -n 20 file.txt显示前 20 行)、tail(显示文件后几行,默认后 10 行,如tail -n 20 file.txt显示后 20 行,tail -f可实时追踪文件新增内容)等命令 。

三、用户与组管理

如何创建一个新用户?

答案:使用useradd命令,如useradd new_user。创建用户时默认会创建同名的用户主目录,也可以使用-d参数指定主目录,如useradd -d /home/new_dir new_user 。

如何设置用户密码?

答案:普通用户使用passwd命令可修改自己的密码;root 用户使用passwd username可以修改指定用户的密码 。

如何创建一个新组?

答案:使用groupadd命令,例如groupadd new_group 。

如何将用户添加到组中?

答案:使用usermod -aG group_name user_name命令,-a表示追加,-G指定组名,将用户添加到指定的附加组中;若要将用户设置为主组,使用usermod -g 。

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

答案:使用who命令,可显示当前登录的所有用户信息;使用w命令,不仅显示登录用户,还会显示用户正在执行的操作等详细信息 。

四、进程管理

如何查看系统中的进程?

答案:使用ps命令,如ps aux(BSD 风格,显示所有用户的所有进程)、ps -ef(System V 风格,显示进程的详细信息,包括进程 ID、父进程 ID 等);top命令可动态实时显示系统中各进程的资源占用情况,类似于 Windows 的任务管理器 。

如何杀死一个进程?

答案:使用kill命令,首先通过pstop找到进程 ID(PID),然后执行kill PID;如果进程不响应,可使用kill -9 PID强制终止进程;pkill命令可通过进程名杀死进程,如pkill firefox杀死所有名为firefox的进程 。

什么是僵尸进程,如何处理?

答案:僵尸进程是指子进程已经结束运行,但父进程没有回收其资源(如进程描述符等),导致子进程残留在内核中的一种状态。处理僵尸进程一般需要找到其父进程,通过重启父进程或修复父进程代码使其正确回收子进程资源;如果父进程是系统服务,可能需要重启相关服务 。

如何查看进程占用的资源(如 CPU、内存)?

答案:使用top命令可实时查看进程占用的 CPU 和内存等资源;htoptop的增强版,界面更美观,操作更方便;ps -aux --sort=-%memps -aux --sort=-%cpu可按内存或 CPU 使用率对进程进行排序 。

如何后台运行一个进程?

答案:在命令末尾加上&符号,如command &;如果进程已经在前台运行,可以使用Ctrl + Z暂停进程,然后使用bg命令将其放到后台继续运行;nohup命令可使进程在退出终端后继续运行,如nohup command & 。

五、网络配置与管理

如何查看网络接口信息?

答案:使用ifconfig命令(部分系统已被ip命令取代);ip addr show可查看网络接口的 IP 地址、MAC 地址等详细信息;ip link show可查看网络接口的状态等信息 。

如何配置静态 IP 地址?

答案:不同的 Linux 发行版配置方式略有不同。以 CentOS 为例,编辑/etc/sysconfig/network-scripts/ifcfg-eth0eth0为网卡名称,根据实际情况修改)文件,设置BOOTPROTO=static,并添加IPADDR(IP 地址)、NETMASK(子网掩码)、GATEWAY(网关)、DNS1(DNS 服务器)等参数,然后重启网络服务systemctl restart network 。

如何测试网络连通性?

答案:使用ping命令,如ping ``www.baidu.com测试到百度服务器的连通性;traceroute(或tracepath)命令可追踪数据包从本地到目标主机所经过的路由节点 。

如何查看开放的网络端口?

答案:使用netstat -anp命令,-a显示所有连接和监听端口,-n以数字形式显示地址和端口,-p显示使用该端口的进程;lsof -i也可查看网络连接和开放端口,lsof -i:80可查看占用 80 端口的进程 。

如何设置防火墙规则(以 iptables 为例)?

答案:例如,允许外部访问本机的 80 端口,命令为iptables -A INPUT -p tcp --dport 80 -j ACCEPT;禁止所有外部 IP 访问本机,iptables -P INPUT DROP;保存规则可使用service iptables save(不同系统保存方式可能不同) 。

六、软件安装与包管理

在 Debian/Ubuntu 系统中如何安装软件包?

答案:使用apt-getapt命令,如apt-get update更新软件源列表,apt-get install package_name安装软件包;apt list --upgradable可查看可升级的软件包 。

Red Hat/CentOS 系统中如何安装软件包?

答案:使用yumdnf(CentOS 8 及以后版本默认使用dnf)命令,如yum update更新系统,yum install package_name安装软件包;dnf search keyword可搜索包含指定关键字的软件包 。

如何从源码安装软件?

答案:一般步骤为:解压源码包(如tar -zxvf source_package.tar.gz),进入解压后的目录,执行./configure(配置安装选项,如指定安装路径等),make编译源码,make install安装软件 。

如何卸载已安装的软件包?

答案:在 Debian/Ubuntu 系统中使用apt-get remove package_name卸载软件包,但会保留配置文件;apt-get purge package_name彻底卸载软件包及其配置文件。在 Red Hat/CentOS 系统中使用yum remove package_name卸载软件包 。

如何查看已安装软件包的信息?

答案:在 Debian/Ubuntu 系统中使用dpkg -s package_name查看软件包详细信息;在 Red Hat/CentOS 系统中使用rpm -qi package_name查看软件包信息 。

七、磁盘与文件系统管理

如何查看磁盘使用情况?

答案:使用df -h命令,-h以人类可读的格式显示磁盘空间使用情况,包括已用、可用、挂载点等信息;du -sh可查看目录的总大小,du -sh /home查看/home目录的大小 。

如何格式化磁盘分区?

答案:首先使用fdiskparted命令对磁盘进行分区,然后使用mkfs命令格式化分区,如mkfs.ext4 /dev/sdb1/dev/sdb1分区格式化为 ext4 文件系统;mkfs.xfs /dev/sdb2格式化为 xfs 文件系统 。

如何挂载磁盘分区或文件系统?

答案:使用mount命令,如mount /dev/sdb1 /mnt/dev/sdb1分区挂载到/mnt目录;若要使系统开机自动挂载,需编辑/etc/fstab文件,添加类似/dev/sdb1 /mnt ext4 defaults 0 0的记录 。

如何检查文件系统错误?

答案:对于 ext 系列文件系统,使用e2fsck命令,如e2fsck -f /dev/sdb1强制检查并修复/dev/sdb1分区的错误;对于 xfs 文件系统,使用xfs_repair命令 。

如何创建交换空间?

答案:首先使用fallocate -l 2G /swapfile创建一个 2GB 的交换文件(也可使用分区创建交换空间),然后执行chmod 600 /swapfile设置权限,mkswap /swapfile格式化为交换空间,swapon /swapfile启用交换空间;若要开机自动启用,需在/etc/fstab文件中添加相关记录 。

八、Shell 脚本编程

Shell 脚本的第一行通常是什么?

答案:通常是#!/bin/bash,这是 Shebang(也称为 Hashbang),指定该脚本使用bash解释器执行;如果系统使用zsh等其他 Shell,可改为#!/bin/zsh 。

如何在 Shell 脚本中定义变量?

答案:变量定义方式为variable_name=value,如name="John";变量使用时需在前面加$符号,如echo $name 。

Shell 脚本中的条件语句有哪些?

答案:主要有if-else语句,例如:

if \[ condition ]; then

    commands

elif \[ another\_condition ]; then

    commands

else

    commands

fi

还有case语句,用于多条件匹配 。

Shell 脚本中的循环语句有哪些?

答案:包括for循环,如for i in {1..10}; do echo $i; donewhile循环,如while [ condition ]; do commands; doneuntil循环,条件不满足时执行循环体 。

如何在 Shell 脚本中传递参数?

答案:在脚本中使用$1$2等表示第一个、第二个参数,$0表示脚本本身;$#表示参数的个数;$*$@都表示所有参数,但在使用双引号包裹时,$*将所有参数视为一个整体,$@将每个参数视为独立的字符串 。

九、系统服务与启动管理

如何查看系统中正在运行的服务?

答案:使用systemctl list-units --type=service命令查看所有已启动的服务;systemctl list-unit-files --type=service --state=enabled查看开机自启的服务 。

如何启动、停止、重启和重新加载服务?

答案:以httpd服务为例,启动服务使用systemctl start httpd,停止服务使用systemctl stop httpd,重启服务使用systemctl restart httpd,重新加载服务配置文件使用systemctl reload httpd 。

如何设置服务开机自启或禁止开机自启?

答案:设置开机自启使用systemctl enable service_name,禁止开机自启使用systemctl disable service_name 。

在旧版本的 Linux 系统(如 CentOS 6)中如何管理服务?

答案:使用service命令,如service httpd start启动httpd服务;使用chkconfig命令设置服务开机自启,如chkconfig httpd on设置httpd服务开机自启 。

什么是 init 系统和 systemd,它们的区别是什么?

答案:init 系统是传统 Linux 系统的初始化进程,采用串行启动服务的方式,启动速度相对较慢。systemd 是新一代的初始化系统,采用并行启动服务的方式,启动速度更快,功能更强大,支持服务依赖管理、资源控制等;systemd 的服务管理命令是systemctl,而 init 系统使用servicechkconfig等命令 。

十、高级系统管理与优化

如何优化 Linux 系统的性能?

答案:可从多个方面进行优化,如调整内核参数(编辑/etc/sysctl.conf文件,如优化 TCP 连接参数net.ipv4.tcp_fin_timeout = 30),优化文件系统(选择合适的文件系统和挂载选项),优化内存使用(如调整swappiness参数echo 10 > /proc/sys/vm/swappiness),优化服务配置(如调整 Web 服务器的并发连接数等) 。

如何进行系统日志分析?

答案:系统日志文件通常位于/var/log目录下,如/var/log/messages记录系统的一般信息和错误信息;/var/log/auth.log记录用户认证相关信息;使用grepawksed等工具对日志进行过滤、提取和分析,也可以使用日志分析工具如 ELK(Elasticsearch、Logstash、Kibana)或 Graylog 。

如何进行系统备份与恢复?

答案:备份可使用tar命令打包文件和目录,如tar -zcvf backup.tar.gz /home/home目录打包压缩为backup.tar.gz;使用rsync命令进行增量备份,保证数据一致性。恢复时使用tar -zxvf backup.tar.gz解压备份文件;对于数据库等特殊数据,需要使用相应的备份恢复工具 。

如何进行磁盘配额管理?

答案:首先在文件系统挂载选项中添加usrquotagrpquota(如/dev/sdb1 /mnt ext4 defaults,usrquota,grpquota 0 0),然后使用quotaon命令启用配额,edquota -u username编辑用户配额,设置磁盘空间和文件数量限制;quota -u username查看用户配额使用情况 。

如何进行系统安全加固?

答案:包括修改默认的 SSH 端口(编辑/etc/ssh/sshd_config文件,修改Port参数),禁止 root 用户直接登录 SSH(设置PermitRootLogin no


我要咨询