(嵌入式八股)第5章 操作系统(二)

5.11 常用的 Linux 命令及其功能说明

1. man 命令

  • 功能:显示命令的手册页。它可以帮助用户了解如何使用特定的命令及其各种选项。

2. ls 命令

  • 功能:列出当前目录中的文件和子目录。

3. cd 命令

  • 功能:切换当前工作目录。

4. pwd 命令

  • 功能:显示当前工作目录的路径。

5. mkdir 命令

  • 功能:创建新的目录。

6. rm 命令

  • 功能:删除文件或目录。

7. rmdir 命令

  • 功能:删除空目录。

8. mv 命令

  • 功能:移动文件或目录,或重命名文件。

9. cp 命令

  • 功能:复制文件或目录。

10. cat 命令

  • 功能:查看文件内容,或将多个文件合并输出。

11. grep 命令

  • 功能:用于搜索文件中包含某个模式的行,通常与管道命令一起使用。

file.txt 文件中查找包含字符串 "hello" 的行。

12. kill 命令

  • 功能:向进程发送信号,通常用于终止进程。

向进程 ID 为 34842的进程发送信号,通常用于终止该进程。

总结

这些命令是 Linux 系统中最常用的命令之一,涵盖了文件管理、进程管理、系统资源查看等多个方面。掌握这些命令,可以帮助用户更高效地使用 Linux 系统进行文件操作、进程管理以及系统监控。

5.12 tar命令

tar 命令在 Linux 系统中用于归档和解压文件,它可以处理多种文件格式,如 .tar.tar.gz.tar.bz2 等。常用的 tar 解压参数组合如下:

常用参数说明

  1. x:表示解压文件。
  2. v:表示显示详细的解压过程,通常会列出解压过程中处理的文件。
  3. f:指定需要解压的文件名。必须紧跟文件名。
  4. z:用于解压 .tar.gz.tgz 格式的文件,它会通过 gzip 解压文件。
  5. j:用于解压 .tar.bz2 格式的文件,它会通过 bzip2 解压文件。
  6. C:指定解压的目标目录,后面需要跟目标目录的路径。
  • 使用 tar 解压文件时,根据文件的格式选择适当的解压参数(如 z 用于 .tar.gz 文件,j 用于 .tar.bz2 文件)。
  • v 参数帮助显示解压过程中的详细信息,而 C 参数让你指定目标解压目录。
  • 5.13 查看进程

    在 Linux 系统中,您可以使用多个命令来查看当前正在运行的进程以及相关的进程信息。最常用的命令是 ps,它用于显示进程快照。以下是几种常见的用法:

    1. 查看所有进程

    使用 ps aux 命令可以查看系统上所有正在运行的进程。该命令会列出进程的详细信息,包括进程 ID(PID)、父进程 ID(PPID)、CPU 使用率、内存使用率、命令等。

  • a:显示所有用户的进程。
  • u:以用户为中心显示进程信息(显示用户信息)。
  • x:包括没有控制终端的进程。
  • 2. 查看特定用户的进程

    如果您只关心某个特定用户的进程,可以使用以下命令:

    • -u:指定用户,列出该用户的所有进程。

    例如,要查看用户 xiaolinji 的所有进程:

    3. 查找特定进程

    如果您想查找特定的进程,可以使用 ps -ef | grep 进程名 命令。这样可以过滤出包含特定名称的进程。

    • -e-f:列出所有进程及其详细信息。
    • grep:过滤输出,查找包含进程名的行。

    例如,要查找名为 nginx 的进程:

    该命令将列出所有与 nginx 相关的进程信息。

    4. 查看进程树

    您还可以使用 ps 命令查看进程的层级关系,即进程树。使用以下命令:

    • -j:显示每个进程的 PID 和 PPID。
    • -H:以树形结构显示进程。

    5. 实时查看进程(使用 top 命令)

    如果您需要实时监视系统上的进程,可以使用 top 命令。它会动态显示正在运行的进程,并提供系统的实时性能数据。

    可以在 top 命令中按下不同的快捷键来排序或过滤进程。

    总结

    • 使用 ps aux 查看所有进程。
    • 使用 ps -u 用户名 查看特定用户的进程。
    • 使用 ps -ef | grep 进程名 查找特定进程。
    • 使用 top 命令实时监控进程和系统性能。

    5.14 Linux系统中调试崩溃问题的流程

    1. 收集崩溃信息:收集核心转储文件和系统日志。
    2. 分析核心转储文件:使用 GDB 分析核心转储文件,查看崩溃位置和堆栈回溯。
    3. 查看系统日志:检查日志文件,查找与崩溃相关的错误信息。
    4. 重现崩溃:如果可能,重现崩溃,以便进行更详细的调试。
    5. 使用调试器:使用 GDB 或其他调试工具附加到崩溃进程,或直接调试程序。
    6. 跟踪代码执行流:通过单步调试、查看变量值和堆栈跟踪,分析程序执行的细节,找出崩溃原因。

    5.15 Linux下的文件类型

    在 Linux 系统中,文件是非常重要的概念,不同类型的文件具有不同的功能。以下是 Linux 中的 7 种文件类型 的详细解释:

    1. 普通文件(Regular Files)

    • 定义:普通文件是最常见的文件类型,用来存储用户的数据、程序代码、配置文件等。
    • 特点:可以是文本文件、二进制文件、程序文件等,通常通过编辑器或程序进行读取和写入。
    • 常见示例/home/user/document.txt/etc/passwd

    2. 目录文件(Directory Files)

    • 定义:目录本身也是一种特殊的文件类型,用来存储文件和其他目录的名称(文件名与文件路径的映射关系)。
    • 特点:目录文件包含了对其他文件和子目录的引用。它并不直接存储文件数据,而是保存指向其他文件或目录的引用。
    • 常见示例/home/user/etc

    3. 字符设备文件(Character Device Files)

    • 定义:字符设备文件是表示字符设备的特殊文件,通常用来与硬件设备进行交互。字符设备按字符顺序处理数据。
    • 特点:例如,键盘、鼠标、串行端口等设备通常通过字符设备文件进行访问。它们是一次一个字符地进行数据传输的。
    • 常见示例/dev/ttyS0(串口设备),/dev/zero(提供零字节的虚拟设备)。

    4. 块设备文件(Block Device Files)

    • 定义:块设备文件代表硬件设备(如硬盘、SSD等),通过它们可以以块为单位进行数据读写。
    • 特点:块设备文件可以支持随机访问,因此它们通常用来访问磁盘设备、硬盘驱动器、USB 存储设备等。
    • 常见示例/dev/sda(硬盘),/dev/sdb(第二块硬盘)。

    5. 符号链接文件(Symbolic Links)

    • 定义:符号链接文件是指向其他文件或目录的引用文件,相当于 Windows 中的快捷方式。
    • 特点:符号链接文件本身不存储数据,而是存储目标文件的路径。使用符号链接可以方便地访问常用文件或目录,或者在不同位置访问同一个文件。
    • 常见示例/usr/bin/python -> /usr/local/bin/python3(指向 Python3 的符号链接)。

    6. 管道文件(FIFO or Pipe Files)

    • 定义:管道文件用于进程间的通信,它允许一个进程将输出数据传递给另一个进程。数据在管道中按顺序流动,常用于串联多个命令。
    • 特点:管道是一个内存缓冲区,用于将数据从一个进程传递给另一个进程,通常在进程之间进行通信,具有先进先出(FIFO)的特性。
    • 常见示例:通过 mkfifo 创建的管道文件,如 /tmp/myfifo

    7. 套接字文件(Socket Files)

    • 定义:套接字文件用于在不同计算机之间或同一计算机上不同进程之间进行网络通信。它允许进程之间通过网络进行数据交换。
    • 特点:套接字文件主要用于网络通信,可以进行双向数据传输,支持不同的通信协议(如 TCP/IP)。
    • 常见示例/var/run/docker.sock(Docker 套接字文件)。

    总结

    • 普通文件:常见的文件类型,存储数据和程序。
    • 目录文件:存储文件和子目录的引用。
    • 字符设备文件:与硬件设备进行字符级通信。
    • 块设备文件:与硬件设备进行块级通信,支持随机访问。
    • 符号链接文件:指向其他文件或目录的快捷方式。
    • 管道文件:用于进程间通信,支持 FIFO(先进先出)数据流。
    • 套接字文件:用于网络通信或进程间的网络数据传输。

    5.16 什么是文件系统

    文件系统(File System)是操作系统用来管理、存储和组织数据的一种机制和结构。它将物理存储设备(如硬盘、固态硬盘、USB 驱动器等)上的原始数据组织成文件和目录,并为用户和应用程序提供访问这些数据的接口。文件系统不仅仅是一个存储介质的抽象层,它也为数据提供了管理、检索、访问控制等功能。

    文件系统的作用

    文件系统在操作系统中的作用主要包括以下几个方面:

    1. 存储管理

    • 文件系统负责管理计算机的存储设备,将数据存储在这些设备上并有效地分配和回收存储空间。
    • 它使用数据块(block)作为基本的存储单位,并通过块分配索引机制来确保文件的存储和访问的高效性。文件系统保证数据能够被快速定位和访问。

    2. 文件组织

    • 文件系统定义了文件和目录的结构。它通过层次化的目录结构(类似树形结构)来组织文件,并提供便于用户和应用程序访问的接口。
    • 文件系统支持对文件和目录的创建、删除、重命名、移动等操作,帮助用户和程序有效地管理和组织文件。
    • 目录结构使得用户能够更方便地查找和分类文件,如将文件按项目、类型或日期等进行分组。

    3. 文件访问控制

    • 文件系统提供了访问控制机制,确保文件的安全性和机密性。通过权限管理,文件系统允许不同的用户或程序对文件进行不同类型的操作,例如读取写入执行
    • 文件的访问权限可以根据用户角色(如管理员、普通用户)进行设置,这样可以防止未经授权的访问和文件修改。
    • 典型的访问控制

    剩余60%内容,订阅专栏后可继续查看/也可单篇购买

    作者简介:仅用几个月时间0基础天坑急转嵌入式开发,逆袭成功拿下华为、vivo、小米等15个offer,面试经验100+,收藏20+面经,分享求职历程与学习心得。 专栏内容:这是一份覆盖嵌入式求职过程中99%问题指南,详细讲解了嵌入式开发的学习路径、项目经验分享、简历优化技巧、面试心得及实习经验,从技术面,HR面,AI面,主管面,谈薪一站式服务,助你突破技术瓶颈、打破信息差,争取更多大厂offer。

    全部评论
    顺序锁和Seq锁实际上是同一种锁,只是名称不同。它们都指的是Seqlock(Sequence Lock),是一种用于多线程编程的同步机制,特别适合读多写少的场景。顺序锁的核心思想是通过版本号来协调读写操作,允许读操作在写操作进行时并发执行,但可能需要重试。
    点赞 回复 分享
    发布于 03-20 19:18 四川

    相关推荐

    03-29 12:10
    门头沟学院 C++
    挣K存W养DOG:散漫消极者淘汰,一眼坑爹。实习几个月转正的时候说你加班太少,能力还行态度不够积极裁了,马上老实。
    点赞 评论 收藏
    分享
    评论
    6
    7
    分享

    创作者周榜

    更多
    牛客网
    牛客企业服务