1 Linux运行级别

Linux系统有七个运行级别,分别用数字0-6表示。每个运行级别都会启动或停止不同的系统服务和进程,以满足不同的系统需求。

​1.我们可以使用 runlevel 命令,进行查看

2.我们可以使用 who -r 命令进行查看

运行等级 描述 命令参数
0 关机模式,系统默认运行级别不能设置为0,否则不能正常启动,一开机就自动关机 shutdown.target
1 单用户模式,root权限,用于系统维护,禁止远程登录,就像Windows下的安全模式 emergency.target
2 多用户模式,没有 NFS 网络支持 rescure.target
3 完整的多用户文本模式,有 NFS,登录后进入控制台命令模式 multi-user.target
4 系统未使用,保留一般不用
5 图形化模式,登陆后进入图形 GUI 模式 graphical.target
6 重启模式,默认运行级别不能设为6,否则不能设为6,否则不能正常启动,就会一直开机重启

我们怎么查看系统在启动时默认的运行等级呢?

可以使用 systemctl get-default 命令进行查看
 systemctl set-default multi-user.target

要改变Linux的运行级别,可以使用以下方法:使用runlevel命令查看当前系统的运行级别。使用init命令切换运行级别。修改/etc/inittab文件中的运行级别。使用systemctl命令设置默认运行级别。使用systemctl命令立即切换到指定的运行级别。

2 Linux常用命令

  • chmod:更改文件或目录的权限。

  • cat:查看文件内容

  • top:inux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况.该命令可以提供实时的对系统处理器的状态监视,它会显示系统中CPU最“敏感”的任务列表,并且可以按CPU使用、内存使用和执行时间对任务进行排序

2.1 grep

分析一行信息

命令 说明
-v 排除选项
grep -v ‘^$’ filename ^:行首,$:行尾,去掉空行
grep -v ‘#|$’ filename ^#:以#开头,去掉空行和以#开头的行

2.2 tar

压缩命令
tar:该命令用于将多个文件或目录打包成一个文件,也可以同时对其进行压缩。常用的参数有:
-c:创建新的压缩文件。
-v:显示详细的压缩过程。
-f:指定压缩文件的名称。
-z:使用gzip压缩算法进行压缩。
-j:使用bzip2压缩算法进行压缩。
-J:使用xz压缩算法进行压缩。

解压命令:
tar:该命令不仅可以用于压缩,也可以用于解压。解压时常用的参数有:
-x:从压缩文件中提取文件或目录。
-v:显示详细的解压过程。
-f:指定要解压的压缩文件名称。
-z:解压使用gzip压缩算法的文件。
-j:解压使用bzip2压缩算法的文件。
-J:解压使用xz压缩算法的文件。
例如,要解压doc.tar.gz到当前目录,可以使用命令tar -xzvf doc.tar.gz。

2.3 top

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况

2.4 ps

ps命令用于报告当前系统的进程状态。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。

2.5 free

free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

面试官常考的 21 条 Linux 命令 - 简书 (jianshu.com)

3 文件系统

3.1 Linux相关:文件的概念?文件有哪些类型?各自的作用是什么?

解析:: 文件类型很多,能回答几种常见的就行,例如普通文件,目录文件,块设备文件,套接字文件。 参考回答:

1.普通文件(-):这是最常见的文件类型,包括纯文本文件、二进制文件、数据文件等。它们不包含文件系统的结构信息,只是用户所接触到的文件。例如,.c文件、可执行的二进制文件等都是普通文件。

2.目录文件(d):目录文件是用于存放文件名及其相关信息的文件。它们可以包含下一级文件目录或普通文件,是内核组织文件系统的基本节点。通过目录文件,用户可以轻松地浏览和管理文件系统。

3.字符设备文件(c):这类文件提供了对设备不带缓冲区的访问,每次访问长度可变。它们通常用于表示系统中的字符设备,如控制台、串口等。

4.块设备文件(b):块设备文件提供对设备(如磁盘)带缓冲的访问,每次访问以固定的长度单位进行。它们用于表示系统中的块设备,如硬盘、U盘等。

5.FIFO(p):FIFO文件也称为命名管道,用于进程间的通信。它们允许一个进程向另一个进程发送数据,而不需要通过中间的文件或网络连接。

6.套接字(s):套接字文件用于进程间的网络通信。它们提供了一种在不同进程之间传输数据的方式,通常用于实现网络服务和客户端之间的通信。

7.链接文件(l):链接文件是指向另一个文件的指针。它们可以分为硬链接和符号链接两种。硬链接指向文件的inode节点,而符号链接则指向另一个文件的路径名。通过链接文件,用户可以方便地访问其他文件或目录。

除了以上七种常见的文件类型外,Linux系统中还有其他一些特殊的文件类型,如特殊文件、门文件等,但这些类型在日常使用中相对较少见。

学习指引: 推荐学习:小林 coding|图解系统|文件系统

3.2 Linux相关:inode的作用?inode包含哪些内容?给出一个文件名,Linux是如何根据该文件名打开文件的?(文件名->inode->block)文件的访问时间是如何记录的?

解析:: 考察linux文件系统相关问题,比较细,推荐大家系统学习后理解掌握 参考回答:

1.inode的作用?: inode,即索引节点,在Linux文件系统中用于存储文件或目录的元数据信息。它是文件系统的一个基本组成部分,允许系统通过inode号而非完整的文件路径快速访问到文件数据。

2.inode包含哪些内容?: inode包含文件的元数据信息,如文件大小、文件所有者、文件权限、文件类型、文件的创建/访问/修改时间等。此外,inode还包含指向文件数据块的指针,这些指针指示了文件内容在磁盘上的实际存储位置。

3.给出一个文件名,Linux是如何根据该文件名打开文件的? (文件名->inode->block): 当给出一个文件名时,Linux首先会根据文件路径在目录结构中查找该文件对应的目录项。目录项中包含了文件的inode号。然后,系统会使用这个inode号在文件系统中找到对应的inode结构。一旦找到inode,系统就可以通过inode中的指针找到文件数据所在的磁盘块(block)。最后,系统将这些磁盘块加载到内存中,从而打开并访问文件。

4.文件的访问时间是如何记录的?: 文件的访问时间是通过inode中的访问时间戳(atime)来记录的。每当文件被读取时,其inode中的atime就会被更新为当前时间。这个机制允许系统跟踪文件的访问历史,以便进行各种管理和维护操作。需要注意的是,为了优化性能,某些文件系统可能会延迟更新atime或仅在文件内容实际被读取时更新它。

阿里云 实习面经(已OC) 一面面经|讲解_牛客网 (nowcoder.com)

3.3 零拷贝是什么?用来解决什么问题?有哪些应用场景?实现方式有哪些?

解析:

参考回答:

1.是什么?:零拷贝是一种IO操作优化技术,旨在减少数据在内核空间和用户空间之间的冗余拷贝,从而解放CPU、减少上下文切换并降低系统资源消耗。它主要用来解决传统IO操作中不必要的数据拷贝问题,提高数据传输效率。

2.应用场景:零拷贝技术广泛应用于需要高性能数据传输的场景,如网络传输、文件传输、数据库操作等。在这些场景中,大量的数据需要在内核空间和用户空间之间传输,传统的IO操作会导致不必要的数据拷贝和性能损失。

3.实现方式有哪些?:实现零拷贝的方式主要有mmap、sendfile、splice和tee等。其中,mmap通过内存映射将内核缓冲区与用户空间共享,避免了数据拷贝;sendfile直接将数据从内核缓冲区发送到网络缓冲区,减少了CPU拷贝;splice和tee则在内核空间内实现数据的传输和复制,避免了用户空间的参与。这些技术根据具体的应用场景和需求选择使用,可以有效地提高数据传输效率和系统性能。

学习指引: 图解系统:什么是零拷贝?如何实现零拷贝?