【Linux】基础命令与面试题汇总

Linux核心概念与命令速查

文章目录


1. 简述Linux系统的开机启动顺序?

Linux系统的开机启动顺序其实可以分为几个主要步骤:

  1. BIOS自检:当你按下电源按钮时,计算机会先进行BIOS自检,检查硬件是否正常。
  2. 读取MBR:接着,系统会读取硬盘上的主引导记录(MBR),这部分包含了启动引导程序的信息。
  3. 加载引导程序:然后,启动引导程序(比如GRUB)会被加载,它负责选择并启动操作系统的内核。
  4. 加载内核:内核被加载到内存中,并开始初始化硬件和驱动程序。
  5. 启动init进程:内核加载完毕后,会启动第一个用户空间进程,也就是init进程。这个进程会根据配置文件(如/etc/inittab)来决定系统的运行级别。
  6. 系统初始化:init进程会执行一系列的初始化脚本,设置系统环境,比如激活交换分区、检查文件系统等。
  7. 启动服务:根据运行级别,系统会启动相应的服务和守护进程。
  8. 用户登录:最后,系统会启动登录程序,等待用户输入用户名和密码进行登录。

这样,Linux系统就完成了从开机到用户可以登录使用的整个过程。

2. Linux系统中符号链接与硬链接的区别?

符号链接和硬链接在Linux系统中有一些关键区别:

  1. 硬链接(Hard Link)

    • 指向同一个inode:硬链接是指向同一个索引节点(inode)的多个文件名。也就是说,硬链接与原始文件共享相同的inode号和物理存储空间。
    • 删除影响:删除硬链接文件不会影响其他指向同一inode的硬链接文件或原文件。只有当所有对一个inode的引用(即所有硬链接)都被删除时,数据块才会被真正释放。
    • 限制:硬链接不能跨越不同的文件系统,只能在同一分区下创建。另外,硬链接不能指向目录。
  2. 符号链接(Symbolic Link,软链接)

    • 指向路径:符号链接是一个特殊的文件,它包含了另一个文件或目录路径的字符串,而不是直接指向inode。当访问符号链接时,系统会解析该链接所指向的目标路径,并访问目标文件或目录。
    • 删除影响:如果原始文件被删除,符号链接将会失效(变成“断链”),因为此时它指向的位置不存在了。
    • 灵活性:符号链接可以跨文件系统,也就是说它可以指向任何文件系统中的文件或目录²。符号链接可以指向文件或目录。

简单来说,硬链接更像是文件的一个别名,而符号链接更像是Windows系统中的快捷方式,它保存的是一个指向另一个文件或目录的路径信息。

3. 请简述RHEL与CentOS的区别?

RHEL(Red Hat Enterprise Linux)和CentOS(Community ENTerprise Operating System)有几个关键区别:

  1. 开发与支持

    • RHEL:这是一个商业发行版,由Red Hat公司开发和维护。它需要购买订阅才能获得官方支持和更新。
    • CentOS:这是一个社区驱动的免费发行版,基于RHEL的源代码构建¹。CentOS没有官方的商业支持,但有社区支持。
  2. 更新与稳定性

    • RHEL:提供长期支持和稳定的更新,适合企业级环境。
    • CentOS:更新频率和稳定性与RHEL相似,但自2021年起,CentOS Linux逐步被CentOS Stream取代,后者是RHEL的上游开发平台。
  3. 使用场景

    • RHEL:广泛用于需要高可靠性和商业支持的企业环境¹。
    • CentOS:常用于开发、测试和小型企业环境,特别是那些不需要商业支持的场景。

简单来说,RHEL适合需要商业支持和高稳定性的企业用户,而CentOS则是一个免费的替代方案,适合那些不需要商业支持的用户。

4. Linux下硬盘分区表示方法?

在Linux系统中,硬盘分区的表示方法主要通过设备文件名来体现。以下是一些常见的表示方法:

  1. 设备类型

    • SCSI/SATA/USB硬盘:使用/dev/sdX表示,其中sd表示SCSI/SATA/USB硬盘,X是盘符,从a开始依次递增。例如,/dev/sda表示第一块硬盘,/dev/sdb表示第二块硬盘。
    • IDE硬盘:使用/dev/hdX表示,其中hd表示IDE硬盘,X是盘符,从a开始依次递增。
  2. 分区编号

    • 主分区和扩展分区:编号从1到4。例如,/dev/sda1表示第一块硬盘的第一个主分区。
    • 逻辑分区:编号从5开始。例如,/dev/sda5表示第一块硬盘的第一个逻辑分区。
  3. 查看分区信息

    • 使用fdisk -l命令可以查看硬盘的分区信息,显示结果类似于:
      /dev/sda1
      /dev/sda2
      /dev/sda5
      
      其中,sda表示硬盘,数字表示分区。

5. 常见的Linux目录结构?

Linux系统的目录结构像一棵倒挂的树,根目录(/)是最顶层,所有其他目录和文件都在其下。以下是一些常见的目录及其用途:

  1. /bin:存放基本的用户命令,如lscp等。
  2. /boot:包含启动Linux系统所需的文件,如内核和引导加载程序。
  3. /dev:存放设备文件,代表系统中的硬件设备。
  4. /etc:存放系统配置文件和脚本。
  5. /home:每个用户的主目录,用户数据存放在这里。
  6. /lib:存放系统和应用程序使用的共享库文件。
  7. /media:挂载可移动媒体设备,如U盘和光盘。
  8. /mnt:临时挂载文件系统的挂载点。
  9. /opt:用于安装附加软件包。
  10. /proc:一个虚拟文件系统,提供系统进程和内核信息。
  11. /root:超级用户(root)的主目录。
  12. /sbin:存放系统管理员使用的系统管理命令。
  13. /tmp:存放临时文件,系统重启后可能会被清除。
  14. /usr:存放用户应用程序和文件,如/usr/bin/usr/lib等。
  15. /var:存放经常变化的数据,如日志文件和邮件队列。

6. 常见的Linux下面压缩包格式有哪些?分别有什么特点?目录如何压缩

在Linux下,常见的压缩包格式有几种,每种都有自己的特点:

  1. ZIP:这种格式很常见,压缩和解压都很方便,支持多种操作系统。命令是zipunzip
  2. TAR:这个格式主要是打包,不压缩。通常会和其他压缩工具一起用,比如gzip或bzip2。命令是tar
  3. GZIP(.gz):这是GNU的压缩工具,压缩速度快,常和tar一起用。命令是gzipgunzip
  4. BZIP2(.bz2):压缩率比gzip高,但速度慢一些。命令是bzip2bunzip2
  5. XZ(.xz):压缩率高,适合压缩大文件。命令是xzunxz

要压缩一个目录,可以用以下命令:

tar -czvf archive.tar.gz 目录名

这个命令会用tar打包目录,并用gzip压缩成一个.tar.gz文件。

7. 简述DNS进行域名解析的过程?

DNS(域名系统)将域名转换为IP地址的过程称为域名解析。这个过程大致分为以下几个步骤:

  1. 用户请求:当你在浏览器中输入一个网址(如www.example.com)时,浏览器会向本地DNS解析器发送请求。
  2. 递归查询:本地DNS解析器首先检查自己的缓存,如果没有找到对应的IP地址,它会向根DNS服务器发送查询请求。
  3. 根DNS服务器:根DNS服务器会返回一个顶级域名服务器(如.com、.org等)的地址。
  4. 顶级域名服务器:本地DNS解析器接着向顶级域名服务器发送查询请求,顶级域名服务器会返回对应的权威DNS服务器的地址。
  5. 权威DNS服务器:本地DNS解析器向权威DNS服务器发送查询请求,权威DNS服务器会返回最终的IP地址。
  6. 返回结果:本地DNS解析器将IP地址返回给浏览器,浏览器使用这个IP地址连接到目标服务器,加载网页内容。

这个过程可能看起来复杂,但实际上在几毫秒内就能完成。

8. 阐述什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?

静态路由动态路由是两种不同的路由方式,各有其特点和适用场景。

静态路由

静态路由是由网络管理员手动配置的固定路由。它的特点包括:

  • 配置简单:管理员手动指定每条路由,易于理解和控制。
  • 资源消耗低:不需要复杂的算法或协议,节省路由器资源。
  • 稳定性好:在网络拓扑结构不变的情况下,提供稳定的路由。
  • 缺点:可扩展性差,网络变化时需要手动更新路由表。

动态路由

动态路由是通过路由协议自动发现和更新路由信息的方式。其特点包括:

  • 自适应性:能够自动响应网络拓扑的变化,计算最佳路径。
  • 管理自动化:减少了手动配置的需要,适合大型或快速变化的网络。
  • 协议多样:常见的动态路由协议有RIP、OSPF、EIGRP等。
  • 缺点:需要消耗一定的网络带宽和设备资源来维护路由信息。

静态路由适用于小型、拓扑结构固定的网络,而动态路由则适用于大型、复杂且经常变化的网络环境。

9. Linux系统的开机启动项如何选择?

在Linux系统中,选择和配置开机启动项可以通过几种方式来实现。以下是一些常见的方法:

1. 使用systemctl

现代Linux发行版中最常用的方法,可以使用systemctl命令来管理服务的开机启动状态:

  • 查看所有开机自启动项
    systemctl list-unit-files --type=service | grep enabled
    
  • 设置服务为开机自启动
    sudo systemctl enable 服务名称
    
  • 取消服务的开机自启动
    sudo systemctl disable 服务名称
    

2. 编辑/etc/rc.local

你也可以通过编辑/etc/rc.local文件来添加自启动命令:

  1. 打开文件:
    sudo nano /etc/rc.local
    
  2. 在文件中添加你需要开机启动的命令,例如:
    /usr/bin/python /home/user/startup.py
    
  3. 保存并退出,然后赋予文件可执行权限:
    sudo chmod +x /etc/rc.local
    

3. 使用/etc/init.d

将脚本放在/etc/init.d目录下,并赋予可执行权限:

  1. 将脚本复制到/etc/init.d
    sudo cp 脚本路径 /etc/init.d/
    
  2. 赋予脚本可执行权限:
    sudo chmod +x /etc/init.d/脚本名称
    

10. 描述Linux运行级别0-6的各自含义?

在Linux系统中,运行级别(runlevel)定义了系统的运行状态和启动的服务。每个运行级别都有特定的用途和配置。以下是运行级别0到6的含义:

  1. 运行级别0:关机模式。系统会停止所有进程并关闭电源。
  2. 运行级别1:单用户模式。通常用于系统维护,不启动网络服务,只允许root用户登录。
  3. 运行级别2:多用户模式(无网络)。支持多用户登录,但不启动网络服务。
  4. 运行级别3:多用户模式(有网络)。支持多用户登录和网络服务,但不启动图形界面。
  5. 运行级别4:未定义。通常保留给用户自定义使用。
  6. 运行级别5:多用户模式(有网络和图形界面)。这是大多数桌面Linux系统的默认运行级别。
  7. 运行级别6:重启模式。系统会停止所有进程并重新启动。

这些运行级别帮助管理员根据需要配置和管理系统的启动行为。

11. 给出正确的关机和重启服务器的命令?

在Linux系统中,关机和重启服务器的命令很简单。以下是一些常用的命令:

关机命令

  1. 立刻关机

    sudo shutdown -h now
    

    这个命令会立即关闭系统。

  2. 定时关机

    sudo shutdown -h +10
    

    这个命令会在10分钟后关闭系统。

  3. 其他关机命令

    sudo poweroff
    sudo halt
    

    这两个命令也可以用来关机。

重启命令

  1. 立刻重启

    sudo reboot
    sudo shutdown -r now
    

    这两个命令会立即重启系统。

  2. 定时重启

    sudo shutdown -r +10
    

    这个命令会在10分钟后重启系统。

12. 包过滤防火墙与代理应用防火墙有什么区别?

包过滤防火墙和代理应用防火墙在工作原理和功能上有一些显著的区别。以下是一个简要的对比:

包过滤防火墙

  1. 工作原理:基于网络数据包的源地址、目标地址、端口号和协议等信息进行过滤和控制。它在网络层(OSI模型的第三层)操作,只检查数据包的头部信息。
  2. 优点:效率高,因为只关注数据包的头部信息;简单易于配置和管理。
  3. 缺点:不能检查数据包的内容,因此容易受到欺骗攻击;不适合处理应用层协议的细节。

代理应用防火墙

  1. 工作原理:充当客户端和服务器之间的中间人,对进出的流量进行深度检查。它不仅检查数据包的头部信息,还可以检查数据包的内容,并且能够进行协议转换。
  2. 优点:能够深度检查数据包的内容,提供更高级的安全性;可以进行协议转换和应用层过滤。
  3. 缺点:相对于包过滤防火墙而言,性能较低,因为需要解析和重新生成数据包。

简单来说,包过滤防火墙更注重效率和简单性,而代理应用防火墙则提供更高的安全性和灵活性,但性能相对较低。

13. 简述什么是DDOS攻击?怎么预防?

什么是DDOS攻击?

DDOS(分布式拒绝服务)攻击是一种通过大量恶意流量使目标服务器或网络资源瘫痪的攻击方式。攻击者通常会利用多个受控设备(称为僵尸网络)同时向目标发送大量请求,导致目标系统资源耗尽,从而无法正常提供服务。

如何预防DDOS攻击?

  1. 增加带宽:确保有足够的网络带宽来处理突发的大量流量。
  2. 使用CDN:内容分发网络(CDN)可以帮助分散流量,减轻服务器负担。
  3. 部署防火墙和入侵检测系统:这些系统可以帮助识别和阻止异常流量。
  4. 启用速率限制:限制特定时间段内的请求数量,防止服务器被过多请求淹没。
  5. 使用DDoS防护服务:许多云服务提供商提供专门的DDoS防护服务,可以实时监控和缓解攻击。

14. Linux 中的用户模式和内核模式是什么含意?

在Linux系统中,用户模式和内核模式是操作系统的两种不同运行模式。它们的主要区别在于权限和功能:

用户模式

  • 定义:用户模式(User Mode)是应用程序运行的模式。在这个模式下,应用程序与用户交互,处理用户输入和输出。
  • 权限:用户模式下的程序权限较低,不能直接访问硬件资源和内存,需要通过系统调用向操作系统请求服务。
  • 安全性:由于权限受限,用户模式下的程序崩溃不会影响整个系统的稳定性。

内核模式

  • 定义:内核模式(Kernel Mode)是操作系统内核运行的模式。在这个模式下,操作系统执行系统级任务,如管理硬件资源、调度进程和内存分配。
  • 权限:内核模式下的代码具有最高权限,可以直接访问所有硬件资源和内存。
  • 安全性:内核模式下的错误可能导致整个系统崩溃,因此需要特别小心。

区别与联系

  • 权限:用户模式权限较低,内核模式权限较高。
  • 资源访问:用户模式需要通过系统调用访问资源,内核模式可以直接访问。
  • 运行环境:用户模式运行在用户空间,内核模式运行在核心空间。

15. Linux 调度程序是根据进程的动态优先级还是静态优先级 来调度进程的?

在Linux系统中,调度程序根据进程的动态优先级来调度普通进程¹²。动态优先级是基于静态优先级计算出来的,并且会随着进程的运行情况进行调整,以确保系统的公平性和响应速度。具体来说:

  • 静态优先级:在进程创建时指定,通常由用户通过nice命令设置。静态优先级不会随着时间改变¹²。
  • 动态优先级:调度程序会根据进程的行为(如CPU使用情况、等待时间等)动态调整优先级。这样可以奖励I/O密集型进程,惩罚CPU密集型进程。

对于实时进程,调度程序则是根据静态优先级来调度的,这些优先级在进程运行期间不会改变。

16. Linux 中的浮点运算由应用程序实现还是内核实现?

在 Linux 中,浮点运算主要是由应用程序来实现的。具体来说,应用程序会使用数学库函数来进行浮点运算,而这些库函数是应用程序链接后调用的。内核本身并不直接处理浮点运算。

如果内核需要进行浮点运算,它会使用软件模拟来完成,但这种情况比较少见,因为效率较低。

17. Linux 通过什么方式实现系统调用?

在 Linux 中,系统调用是用户空间与内核空间之间的桥梁。具体实现方式如下:

  1. 系统调用号:每个系统调用都有一个唯一的系统调用号。当用户空间的程序需要进行系统调用时,会将这个号传递给内核。

  2. 陷入内核模式:用户空间的程序通过特定的指令(如 int 0x80syscall 指令)触发陷入内核模式。这些指令会将控制权从用户空间转移到内核空间。

  3. 内核处理:内核接收到系统调用请求后,会根据系统调用号找到对应的内核函数来处理请求。

  4. 返回用户空间:内核完成系统调用后,将结果返回给用户空间的程序,并恢复到用户模式。

这种机制确保了用户空间程序可以安全地请求内核执行特权操作,同时保持系统的稳定性和安全性。

18. Linux 软中断和工作队列的作用是什么?

在 Linux 中,软中断和工作队列都是用于处理延迟任务的机制,但它们有不同的应用场景和特性。

软中断 (Softirq)

软中断是一种用于处理非紧急任务的机制。它允许内核在处理完紧急的硬件中断后,再以延迟的方式处理这些任务。软中断的特点包括:

  • 不能睡眠:软中断在执行时不能被阻塞或睡眠。
  • 高并发性:可以在多个 CPU 上并行执行。
  • 不可嵌套:同一类型的软中断不能嵌套执行,但可以被硬件中断打断。

工作队列 (Workqueue)

工作队列用于延迟执行长时间或复杂的任务。它的特点包括:

  • 可以睡眠:工作队列中的任务可以被阻塞或睡眠。
  • 进程间切换:任务可以在不同的进程间切换,以完成不同的工作。
  • 适合长时间任务:适用于需要较长时间处理的任务,以避免影响系统性能。

这两种机制共同确保了系统在处理紧急任务时的高效性,同时也能合理安排非紧急任务的执行顺序。

19. Linux 下命令有哪几种可使用的通配符?

在 Linux 中,常用的通配符有以下几种:

  1. 星号 (*):匹配零个或多个字符。例如,ls *.txt 会列出所有以 .txt 结尾的文件。
  2. 问号 (?):匹配单个字符。例如,ls file?.txt 会匹配 file1.txtfileA.txt 等。
  3. 方括号 ([ ]):匹配方括号内的任意一个字符。例如,ls file[1-3].txt 会匹配 file1.txtfile2.txtfile3.txt

这些通配符可以帮助你更高效地操作和管理文件。

20. Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?

在 Linux 中,进程有几种不同的状态,每种状态在 ps 命令的输出中都有对应的符号表示。以下是常见的进程状态及其符号:

  1. 运行状态 (Running):表示进程正在运行或准备运行。符号为 R
  2. 可中断的睡眠状态 (Interruptible Sleep):表示进程正在等待某个事件(如 I/O 操作)完成。符号为 S
  3. 不可中断的睡眠状态 (Uninterruptible Sleep):表示进程正在等待某个不可中断的事件(如硬件操作)。符号为 D
  4. 停止状态 (Stopped):表示进程已停止,通常是因为接收到 SIGSTOP 信号。符号为 T
  5. 僵尸状态 (Zombie):表示进程已终止,但其进程描述符仍保留,等待父进程读取其退出状态。符号为 Z

21. 简述Linux基于xinetd服务的管理方法 ?

xinetd 是 Linux 系统中的一个超级守护进程,用来管理各种网络服务。它的管理方法主要分为两部分:启动管理自启动管理

启动管理

基于 xinetd 的服务没有独立的启动脚本,而是依赖 xinetd 的启动脚本。所有基于 xinetd 的服务配置文件都保存在 /etc/xinetd.d/ 目录中。要启动某个服务,比如 Telnet 服务,你需要修改它的配置文件,把 disable = yes 改成 disable = no,然后重启 xinetd 服务。

自启动管理

自启动管理有两种方法:

  1. 使用 chkconfig 命令:这个命令可以管理所有 RPM 包默认安装的服务,包括基于 xinetd 的服务。你只需要运行 chkconfig 服务名 on 就可以让服务在系统启动时自动启动。
  2. 使用 ntsysv 命令:这个命令提供了一个图形化界面,可以方便地管理服务的自启动。

22. 简述Linux /etc/inittab 设置(修改)系统默认运行级别 ?

在 Linux 系统中,/etc/inittab 文件用于设置系统的默认运行级别。运行级别决定了系统启动时加载哪些服务。常见的运行级别有:

  • 0:关机
  • 1:单用户模式(类似于 Windows 的安全模式)
  • 2:多用户模式,不带 NFS
  • 3:完全的多用户模式(标准字符界面)
  • 4:系统保留
  • 5:图形界面
  • 6:重启

要修改系统的默认运行级别,你需要编辑 /etc/inittab 文件。找到类似 id:5:initdefault: 的行,将其中的数字改为你想要的运行级别。例如,如果你想设置为字符界面模式,可以改为 id:3:initdefault:

修改完成后,保存文件并重启系统,系统就会按照你设置的默认运行级别启动了。

23. 如何检查Linux某项服务是否在运行?

要检查 Linux 系统中某项服务是否在运行,可以使用 systemctl 命令。以下是具体步骤:

  1. 打开终端
  2. 输入命令systemctl status 服务名,例如要检查 Apache 服务是否在运行,可以输入 systemctl status apache2¹²。

这个命令会显示服务的详细状态信息,包括是否正在运行。如果服务正在运行,你会看到类似 active (running) 的状态。

24. 解释suid、sgid和sticky bit这几个术语?

在 Linux 系统中,suidsgidsticky bit 是三种特殊的文件权限设置,它们提供了额外的安全特性。以下是它们的简要解释:

1. SUID(Set User ID upon execution)

  • 作用:当一个可执行文件设置了 SUID 位时,任何用户执行该文件时都会以文件所有者的权限运行,而不是以执行该程序的用户权限运行。
  • 应用场景:例如 passwd 命令,普通用户可以修改自己的密码,因为 passwd 命令设置了 SUID 位,使其以 root 权限运行。
  • 显示方式:在 ls -l 命令的
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值