Linux操作系统面试题1

简介: Linux操作系统面试题

Linux 概述

什么是Linux

Linux是一套开源的类似Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络 为核心的设计思想,是一个性能稳定的多用户网络操作系统。


Unix和Linux有什么区别?

Linux和Unix都是功能强大的操作系统,都是应用广泛的服务器操作系统,有很多相似之处,甚至有一部分人错误地认为Unix和Linux操作系统是一样的,然而,事实并非如此Unix和Linux有什么区别


开源性


Linux是一款开源操作系统,不需要付费,即可使用;Unix是一款对源码实行知识产权保护的传统商业软件,使用需要付费授权使用。


跨平台性


Linux操作系统具有良好的跨平台性能,可运行在多种硬件平台上;Unix操作系统跨平台性能较弱,大多需与硬件配套使用。


可视化界面


Linux除了进行命令行操作,还有窗体管理系统;Unix只是命令行下的系统。


硬件环境


Linux操作系统对硬件的要求较低,安装方法更易掌握;Unix对硬件要求比较苛刻,按照难度较大。


用户群体


Linux的用户群体很广泛,个人和企业均可使用;Unix的用户群体比较窄,多是安全性要求高的大型企业使用,如银行、 电信部门等,或者Unix硬件厂商使用,如Sun等。


相比于Unix操作系统,Linux操作系统更受广大计算机爱好者的喜爱,主要原因是Linux操作系统具有Unix操作系统的全部功能,并且能够在普通PC计算机上实现全部的Unix特性,开源免费的特性,更容易普及使用!


什么是 Linux 内核?

Linux 系统的核心是内核。它借助进程间通信和系统调用,在硬件级别上充当应用程序和数据处理之间的桥梁。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。内核是Linux操作系统的主要部分,它可实现进程管理、内存管理、文件系统、设备驱动和网络系统等功能,为核外的所有程序提供运行环境。


内核的作用是什么?

  • 内存管理:追踪记录有多少内存存储了什么以及存储在哪里
  • 进程管理:确定哪些进程可以使用中央处理器(CPU)、何时使用以及持续多长时间
  • 设备驱动程序:充当硬件与进程之间的调解程序/解释程序
  • 系统调用和安全防护:从流程接受服务请求


在正确实施的情况下,内核对于用户是不可见的,它在自己的小世界(称为内核空间)中工作,并从中分配内存和跟踪所有内容的存储位置。用户所看到的内容(例如 Web 浏览器和文件)则被称为用户空间。这些应用通过系统调用接口(SCI)与内核进行交互。


举例来说,内核就像是一个为高管(硬件)服务的忙碌的个人助理。助理的工作就是将员工和公众(用户)的消息和请求(进程)转交给高管,记住存放的内容和位置(内存),并确定在任何特定的时间谁可以拜访高管、会面时间有多长。


Linux的基本组件是什么?

就像任何其他典型的操作系统一样,Linux拥有所有这些组件:内核,shell和GUI,系统实用程序和应用程序。Linux比其他操作系统更具优势的是每个方面都附带其他功能,所有代码都可以免费下载。


Linux 的体系结构

从大的方面讲,Linux 体系结构可以分为两块:

用户空间(User Space) :用户空间又包括用户的应用程序(User Applications)、C 库(C Library) 。


内核空间(Kernel Space) :内核空间又包括系统调用接口(System Call Interface)、内核(Kernel)、平台架构相关的代码(Architecture-Dependent Kernel Code) 。


Linux体系结构_callOfSZR的博客-CSDN博客


【001】一文带你全面掌握Linux系统体系结构 - 知乎


为什么 Linux 体系结构要分为用户空间和内核空间的原因?

  • 现代 CPU 实现了不同的工作模式,不同模式下 CPU 可以执行的指令和访问的寄存器不同。
  • Linux 从 CPU 的角度出发,为了保护内核的安全,把系统分成了两部分。


用户空间和内核空间是程序执行的两种不同的状态

我们可以通过两种方式完成用户空间到内核空间的转移

  • 系统调用
  • 硬件中断


BASH和DOS之间的基本区别是什么?

BASH命令区分大小写,而DOS命令则不区分;

在BASH下,/ 是目录分隔符,\ 作为转义字符。在DOS下,/ 用作命令参数分隔符,\ 是目录分隔符

DOS遵循命名文件中的约定,即8个字符的文件名后跟一个点,扩展名为3个字符。BASH没有遵循这样的惯例。


Linux 开机启动过程?

第一步:加电

第二步:加载BIOS设置,选择启动盘。

这是因为因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信 息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。在BIOS将系统的控制权交给启动硬盘第一个扇区之后,就开始由Linux来控制系统了。


第三步:加载磁盘中MBR中的grub。


MBR(Master Boot Record):即主引导分区,是启动盘的前512字节,里面存放了预启动信息和分区信息。前446个字节,即是grub引导程序后66个字节是分区表的信息。


第四步:加载Linux内核系统到内存当中,运行超级进程/sbin/init进程。


在Linux系统中,init进程的进程号永远是1,也就是说,系统中的所有进程的父进程都是init进程。可以使用命令pstree进行查看。


第五步:加载配置文件。


init程序启动之后,会读取/etc/inittab文件,来决定系统的运行级别,Linux系统的运行级别有7中,从0-6

# 0 - 关机模式(千万不要把initdefault设置为0 ,要不然你永远开不了机)

# 1 - 单用户模式 (此模式相当于救援模式,内核损坏,root忘记密 等可以使用此模式进行恢复 。想当于windows下的安全模式)

# 2 - 多用户,但是没有NFS

# 3 - 完全多用户模式 (文本命令行界面,一般服务器都是此模式)

# 4 - 保留未使用

# 5 - 图形桌面(系统启动之后会进入到图形化桌面系统中)

# 6 - 重新启动(千万不要把initdefault设置为6 )

平时我们常用的也就是1,3,5。可以使用init 3 ,init 5进行切换。运行级别决定之后,加载相应的配置文件。第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等


第六步:加载内核模块,具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。


第七步:根据运行级别,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。


第八步:启动init.d下的系统进程


第九步:出现登录系统的画面。


Linux系统缺省的运行级别?

Linux运行级别从0~6,共7个。

0:关机。不能将系统缺省运行级别设置为0,否则无法启动。

1:单用户模式,只允许root用户对系统进行维护。

2:多用户模式,但不能使用NFS(相当于Windows下的网上邻居)

3:字符界面的多用户模式。

4:未定义。

5:图形界面的多用户模式。

6:重启。不能将系统缺省运行级别设置为0,否则会一直重启。

--查看运行级别命令

runlevel

先后显示系统上一次和当前运行级别。如果不存在上一次运行级别,则用N表示。

--改变提供运行级别命令

init [n]其中n是上面的数字0-6


Linux 使用的进程间通信方式?

了解即可,不需要太深入。

1、管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。

2、信号(signal) 。

3、消息队列。

4、共享内存。

5、信号量。

6、套接字(socket) 。


Linux 有哪些系统日志文件?

1686401029583.png

什么是交换空间?

交换空间是Linux使用的一定空间用于临时保存一些并发运行的程序。当RAM没有足够的内存来容纳正在执行的所有程序时,就会发生这种情况。

什么是root帐户

root帐户就像一个系统管理员帐户,允许你完全控制系统。你可以在此处创建和维护用户帐户,为每个帐户分配不同的权限。每次安装Linux时都是默认为root帐户。

什么是LILO?

LILO是Linux的引导加载程序。它主要用于将Linux操作系统加载到主内存中,以便它可以开始运行。

什么是BASH?

BASH是Bourne Again SHell的缩写。它由Steve Bourne编写,作为原始Bourne Shell(由/ bin / sh表示)的替代品。它结合了原始版本的Bourne Shell的所有功能,以及其他功能,使其更容易使用。从那以后,它已被改编为运行Linux的大多数系统的默认shell。


长话短说:Bash 也是一种跑在你电脑里的程序(program),但它的设计使你能轻松地与之“对话”(talk)。


在你电脑里的每个程序都能做很多不同的事:读取文档、启动其他程序、数学运算、控制设备。Bash 这个程序,与他们最大的不同在于,它并不执行某种特定的任务,而是听从你这个用户的命令。为此,一种“语言”被特意创造出来,使你可以与 Bash 对话,告诉它该做什么。这种语言就是 Bash shell 语言,你之后会与它熟悉亲近起来。


Shell这类程序,本质上是为你提供一个与其他程序交互的界面(interface)。这类程序数量也非常多,每一个都有它自己配套使用的语言,如其中比较流行的 C shell (csh)、Z shell (zsh)、Korn shell (ksh)、Bourne shell、Almquist shell (dash)等。目前最主流的就是 Bash (也作 Bourne Again shell) 。需留意,所有这些 shell 使用的语法看起来都很相似,当你实际写代码输入命令时,一定要清楚自己当前正在使用哪种 shell。之后,你可能会经常听到人们用“shell 代码”称呼他们所写的代码,而这种表达的笼统含糊就相当于用“源码”指代你具体的 Java 代码。这份指南要教你的是如何写 bash shell 代码,它也仅适用于 bash 这种 shell。


什么是CLI?

命令行界面(英语**:command-line interface**,缩写]:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(CUI)。


通常认为,命令行界面(CLI)没有图形用户界面(GUI)那么方便用户操作。因为,命令行界面的软件通常需要用户记忆操作的命令,但是,由于其本身的特点,命令行界面要较图形用户界面节约计算机系统的资源。在熟记命令的前提下,使用命令行界面往往要较使用图形用户界面的操作速度要快。所以,图形用户界面的操作系统中,都保留着可选的 命令行界面。


什么是GUI?

图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。


图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面 相比,图形用户界面有许多优点。


开源的优势是什么?

开源允许你将软件(包括源代码)免费分发给任何感兴趣的人。然后,人们可以添加功能,甚至可以调试和更正源代码中的错误。它们甚至可以让它运行得更好,然后再次自由地重新分配这些增强的源代码。这最终使社区中的每个人受益。


GNU项目的重要性是什么?

这种所谓的自由软件运动具有多种优势,例如可以自由地运行程序以及根据你的需要自由学习和修改程序。它还允许你将软件副本重新分发给其他人,以及自由改进软件并将其发布给公众。


磁盘、目录、文件

简单说下 Linux 文件系统?

在 Linux 操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。


也就是说在 Linux 系统中有一个重要的概念:一切都是文件。其实这是 Unix 哲学的一个体现,而 Linux 是重写 Unix 而来,所以这个概念也就传承了下来。在 Unix 系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。


Linux 支持 5 种文件类型,如下图所示:



Linux 的目录结构是怎样的?

Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录

常见目录说明

/bin: 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里;

/etc: 存放系统管理和配置文件;

/home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;

**/usr **: 用于存放系统应用程序;

/opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;

/proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;

/root: 超级用户(系统管理员)的主目录(特权阶级o);

/sbin: 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;

/dev: 用于存放设备文件;

/mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;

/boot: 存放用于系统引导时使用的各种文件;

**/lib **: 存放着和系统运行相关的库文件 ;

/tmp: 用于存放各种临时文件,是公用的临时文件存储点;

/var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;

/lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里。


相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
目录
相关文章
|
4天前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
15 0
Vanilla OS:下一代安全 Linux 发行版
|
1天前
|
缓存 网络协议 Linux
Linux操作系统内核
Linux操作系统内核 1、进程管理: 进程调度 进程创建与销毁 进程间通信 2、内存管理: 内存分配与回收 虚拟内存管理 缓存管理 3、驱动管理: 设备驱动程序接口 硬件抽象层 中断处理 4、文件和网络管理: 文件系统管理 网络协议栈 网络安全及防火墙管理
18 4
|
3天前
|
物联网 Linux 云计算
Linux操作系统的演变与未来趋势####
【10月更文挑战第29天】 本文深入探讨了Linux操作系统从诞生至今的发展历程,分析了其在服务器、桌面及嵌入式系统领域的应用现状,并展望了云计算、物联网时代下Linux的未来趋势。通过回顾历史、剖析现状、预测未来,本文旨在为读者提供一个全面而深入的视角,以理解Linux在当今技术生态中的重要地位及其发展潜力。 ####
|
8天前
|
边缘计算 人工智能 运维
Linux操作系统:开源力量的崛起与影响###
一场技术革命的回顾 回溯至1991年,当Linus Torvalds宣布Linux操作系统的诞生时,世界或许并未意识到这一举措将如何深刻地改变技术领域的面貌。本文旨在探讨Linux操作系统的发展历程、核心特性、以及它如何引领了一场开源运动,重塑了软件行业的生态。从最初的个人爱好项目成长为全球最广泛采用的服务器操作系统之一,Linux的故事是技术创新与社区精神共同推动下的辉煌篇章。 ###
|
7天前
|
人工智能 安全 Linux
|
10天前
|
物联网 Linux 5G
Linux操作系统的演变与未来趋势####
本文深入探讨了Linux操作系统的发展历程,从最初的一个学生项目到如今全球最流行的开源操作系统之一。文章将分析Linux的核心优势、关键特性以及它在云计算、物联网和嵌入式系统中的应用前景。通过具体案例展示Linux如何推动技术创新,并预测其在未来技术生态中的角色。本文旨在为读者提供一个全面而深入的理解,帮助他们认识到Linux在现代计算环境中的重要性及其未来的潜力。 ####
|
10天前
|
人工智能 安全 物联网
Linux操作系统的演变与未来:从开源精神到万物互联的基石###
本文是关于Linux操作系统的演变、现状与未来的深度探索。Linux,这一基于Unix的开源操作系统,自1991年由林纳斯·托瓦兹(Linus Torvalds)学生时代创造以来,已经彻底改变了我们的数字世界。文章首先追溯了Linux的起源,解析其作为开源项目的独特之处;随后,详细阐述了Linux如何从一个小众项目成长为全球最广泛采用的操作系统之一,特别是在服务器、云计算及嵌入式系统领域的主导地位。此外,文章还探讨了Linux在推动技术创新、促进协作开发模式以及保障信息安全方面的作用,最后展望了Linux在未来技术趋势中的角色,包括物联网、人工智能和量子计算等前沿领域的潜在影响。 ###
|
14天前
|
运维 物联网 Linux
Linux操作系统的演变与未来趋势####
本文通过探讨Linux操作系统的历史沿革、当前主流版本的特点,以及其在服务器、云计算和物联网等新兴领域的应用,旨在揭示Linux在现代计算环境中的重要性。此外,文章还将分析Linux面临的挑战与机遇,预测其未来的发展趋势。希望通过这篇文章,读者能够更好地理解Linux的价值,并对其未来充满期待。 ####
|
14天前
|
存储 Linux Shell
深入理解Linux操作系统的启动过程
【10月更文挑战第21天】本文将深入浅出地介绍Linux操作系统的启动过程,包括BIOS、引导加载程序、内核初始化和系统服务启动等环节。通过阅读本文,您将了解到Linux启动过程中的关键步骤和相关概念,以及如何优化启动速度。
|
14天前
|
缓存 算法 安全
深入理解Linux操作系统的心脏:内核与系统调用####
【10月更文挑战第20天】 本文将带你探索Linux操作系统的核心——其强大的内核和高效的系统调用机制。通过深入浅出的解释,我们将揭示这些技术是如何协同工作以支撑起整个系统的运行,同时也会触及一些常见的误解和背后的哲学思想。无论你是开发者、系统管理员还是普通用户,了解这些基础知识都将有助于你更好地利用Linux的强大功能。 ####
25 1