Linux CentOS
文章平均质量分 83
Linux CentOS笔记
S+叮当猫
好好学习,天天向上。
展开
-
第一部分:Linux基础指令讲解及简单使用分析—1
ls、pwd、which、alias、cd、touch、stat、mkdir、rm、man、nano、cp、mv、cat原创 2024-04-02 22:02:15 · 751 阅读 · 0 评论 -
第一部分:Linux基础指令讲解及简单使用分析—2
输出重定向、输入重定向、追加重定向、cat、less、head、tail、wc、uniq、sort、Date、时间戳、which、grep、zip、unzip、tar原创 2024-04-08 23:52:59 · 636 阅读 · 0 评论 -
第一部分:Linux基础指令补全,权限问题分析—3
bc、uname、shutdown、Linux用户权限、Linux文件类型、文件权限、原创 2024-04-10 00:33:05 · 941 阅读 · 0 评论 -
第一部分:Linux权限问题补全—4
文件目录权限的修改方法、文件拥有者和所属组修改、文件目录初始权限说明、文件目录权限掩码、粘滞位原创 2024-04-11 19:47:24 · 1042 阅读 · 0 评论 -
第二部分:1---Linux软件包管理器yum
查看yum配置源文件、yum模糊搜索软件包、yum安装软件、yum卸载软件、yum换国内源(国内镜像服务器)原创 2024-04-13 22:20:00 · 291 阅读 · 0 评论 -
第二部分:2---Linux文本编辑器vim使用和分析
vim的多种模式使用,命令模式,插入模式,底行模式,vim批量注释,Linux普通用户添加到sudoers用户配置文件,gcc/g++编译器。原创 2024-04-14 14:23:07 · 1101 阅读 · 0 评论 -
第二部分:3---Linux编译器gcc/g++
程序的翻译过程配图详解,编译器和编程语言的关系解析,gcc编译器的选项,动态库和静态库的概念以及优缺点,为Linux安装gcc和g++的静态库原创 2024-05-10 20:53:18 · 751 阅读 · 0 评论 -
第二部分:4---Linux自动化构建代码make/makefile(逻辑梳理,轻松理解)
需求引出、make和makefile,简单的使用(自动化构建和清理),规范使用make的细节,.PHONY修饰的目标文件的特点,文件的ACM时间,make可以判断文件新旧的原理,make解释器部分语法。原创 2024-05-12 00:41:41 · 742 阅读 · 1 评论 -
第二部分:5---Linux小程序“进度条”及缓冲区的概念(逻辑梳理,轻松理解)
C/C++缓冲区的解析,字符设备键盘和显示器的输入输出原理,简单的进度条实现原创 2024-05-15 09:54:27 · 337 阅读 · 0 评论 -
第二部分:6---Linux下版本控制器Git的知识点
git和Linux的故事,git创建仓库、删除仓库、创建本地仓库、提交代码到远程仓库、查看提交日志、同步远程仓库到本地等。原创 2024-05-15 14:17:15 · 780 阅读 · 0 评论 -
第二部分:7---Linux调试器gdb及拓展知识
为什么测试人员需要测试的版本必须是release版本而不是debug版本?为什么用户要使用release版本?灰度上线、gcc/g++默认编译的可执行程序的版本的猜测和证明、centos7安装gdb、gdb调试debug版本的可执行程序、gdb查看源代码、启动被调试的程序、在程序中设置断点、显示当前设置的断点信息、删除设置的断点、禁用和启用断点、退出gdb、逐语句执行代码、逐过程执行代码、打印变量或者表达式的值、像VS一样常显示某些变量或表达式、取消常显示的变量或表达式、运行到指定行等原创 2024-05-23 19:41:04 · 839 阅读 · 0 评论 -
第三部分:1---Linux下进程的概念(逻辑推导,全干货无废话)
进程是一个正在执行的程序实例,包含程序代码、数据、堆栈和处理器状态。程序被双击后加载到内存,相当于从磁盘拷贝到内存,由操作系统内核分配进程控制块(PCB),初始化进程的基本信息(如进程ID、状态、优先级等),分配内存空间,设置页表等。在Linux中,进程的本质是一个C语言的结构体对象,即task_struct结构体。这个结构体的一个个结构体成员就是进程的所有信息,如进程ID、状态、寄存器内容、内存管理信息等。进程=可执行程序+内核数据结构(PCB)对进程的管理就是对PCB的管理。原创 2024-05-28 17:42:46 · 901 阅读 · 0 评论 -
第三部分:2---进程理解/Linux下进程初识
操作系统如何管理进程?进程是由操作系统创建的->操作系统是由C语言写的->进程需要被C语言写的操作系统管理->C语言通过结构体管理数据->进程相当于一个个结构体->结构体中的成员是进程的一个个属性。进程的结构体:进程的结构体被称为“进程的PCB”,当进程被创建PCB就会被创建。Linux下PCB叫做task_struct。操作系统如何加载进程?操作系统先将可执行程序从磁盘加载到内存中。操作系统为加载的进程创建PCB,用于管理进程信息。原创 2024-09-10 21:59:19 · 1091 阅读 · 0 评论 -
第三部分:3---环境变量
环境变量是一个全局变量,系统中存在大量的环境变量,存在新式是以键值对的方式存在。每一个环境变量都有特殊功能,用于完成特定的系统功能。环境变量可以被系统中运行的任何进程访问。环境变量可以存储:目录路径、文件路径、系统信息、临时标志或状态等等。原创 2024-09-10 22:03:00 · 865 阅读 · 0 评论 -
第三部分:4---进程地址空间
程序地址空间的本质是操作系统内核管理的一个数据结构,它用于描述和管理一个进程所能访问的所有虚拟内存地址。地址空间中的内存区域通常被划分为多个小块,每个小块对应一个特定的用途,如代码段、数据段、堆区、栈区等。这个数据结构的核心是一个或多个结构体,这些结构体包含了对每个内存小块的描述信息,包括起始地址、结束地址、访问权限(如可读、可写、可执行)等。程序地址空间仅仅是对进程虚拟内存的逻辑描述,并不是实际的物理内存。它定义了进程在运行时可以访问哪些虚拟地址,而实际的物理内存是由操作系统通过页表等机制进行原创 2024-09-10 22:07:02 · 759 阅读 · 0 评论 -
第三部分:5---进程等待、进程终止
进程的两种终止方式:正常终止:当进程完成其所有任务后,自行结束,并返回一个退出码。这个退出码通常通过 main 函数的返回值或 exit() 函数指定。正常终止的进程会将退出码传递给操作系统和父进程,用于告诉其结束原因。异常终止:当进程在运行过程中因某种原因未能正常完成而被迫终止。这通常是由于进程收到来自操作系统的信号,例如 SIGKILL 或 SIGSEGV。信号可能由用户(用户可以手动向进程发送信号使其终止,例如:“ kill -9 pid ”)、操作系统或其他进程触发,表示进程需要立即停止。异常原创 2024-09-10 22:11:27 · 977 阅读 · 0 评论 -
第三部分:6---进程程序替换
通过 fork 创建的进程,在最初会执行父进程代码的一部分,这通常包括 fork 之后的代码分支。父进程和子进程在 fork 调用后会继续执行相同的代码,但它们在不同的进程上下文中独立运行。如果希望 fork 创建的子进程执行与父进程完全不同的代码并处理新的数据,从而不再与父进程有任何关联,则需要进行进程程序替换。这通常是通过 exec 系列函数实现的。进程程序替换的目的,就是将子进程的当前进程映像替换为一个新的程序映像,使得子进程能够执行与父进程无关的代码,并处理与父进程不同的数据。这一操作使得子原创 2024-09-10 22:14:26 · 849 阅读 · 0 评论 -
第四部分:1---文件基础理解、C语言文件操作、Linux系统文件接口、使用一个变量传递多个标志位
文件是如何组成的? 文件由两部分组成:文件的内容和文件的属性。 文件内容是数据,文件属性也是数据。因此,文件内部存储文件的内容数据和属性数据。 对文件操作的本质是什么? 对文件的操作就是对文件内容或文件属性的操作。操作文件属性可以包括更改文件权限、修改时间戳等,而操作文件内容则是读写文件中的数据。 文件被打开的本质是什么: 文件可以分为已经打开的文件和未被打开的文件。要操作的就是被打开的文件==加载到内存的文件。 打开一个文件,实际上是操作系统将文件从磁盘加载到内存的过程。这个过程需要操原创 2024-09-13 00:46:06 · 878 阅读 · 0 评论 -
第四部分:2---文件内核对象,文件描述符,输出重定向
struct file 是在内核空间中创建的用于描述文件的结构体, 每当一个文件被打开时,内核会为该文件创建一个对应的 struct file 结构体,并在文件描述符表中为其分配一个文件描述符。基于文件的定义(文件 = 内容 + 属性),struct file 结构体包含了文件的各种属性,文件的操作方法,指向文件缓冲区的指针。修改文件属性,可以直接操作struct file的成员实现。修改文件内容,需要通过指向文件缓冲区的指针来操作。而缓冲区是内存中的一块区域,用于暂时存放文件的数据。当文件被读原创 2024-09-13 00:49:01 · 690 阅读 · 0 评论 -
第五部分:1---进程的前后台管理
使用 “ctrl + z” 发送SIGTSTP(暂停信号),将当前前台进程暂停并放入后台,shell 则自动回到前台。使用 “ctrl + c” 发送 SIGINT(2号信号)用于终止前台进程,后台进程不会被此信号终止。使用 “fg + 后台进程编号” 可以将后台进程切换到前台,shell 则会被切换到后台。ctrl+z 后进程被暂停,使用bg 命令,将暂停的后台进程继续运行,但不会切换回前台。前台进程:只能有一个前台进程,能够接收用户的输入,因为键盘是唯一的输入设备。原创 2024-09-27 20:12:36 · 268 阅读 · 0 评论 -
第五部分:2---中断与信号
中断机制是CPU和外设之间的一种直接通信方式,当外设(例如键盘、硬盘等)有需要服务的请求时,会通过发送中断信号告知CPU。CPU引脚和中断号的关系:CPU有专用的引脚来接收外设发出的中断信号。这些引脚通常用于接收外设发出的“中断请求”(Interrupt Request, IRQ)。不同外设可能对应不同的IRQ线路,这样CPU可以根据收到的IRQ来区分是哪一个外设发出的中断。当外设通过IRQ线路发送信号后,CPU会通过一个专门的寄存器(通常叫做中断请求寄存器,Interrupt Request R原创 2024-09-27 20:16:44 · 291 阅读 · 0 评论 -
第五部分:3---信号的介绍、产生、保存、处理
信号的概念:信号是进程间通信的一种异步通知机制,用于向目标进程发送通知。信号的处理是异步的,意味着信号可以在任何时候产生,而进程会在适当时机对信号作出处理。异步的概念:异步(Asynchronous)是指在编程或系统设计中,任务的执行不需要立即等待其他任务完成,而是可以在不阻塞的情况下继续进行。信号的3种处理方式:信号有三种处理方式:默认处理,忽略,自定义处理(捕捉)。信号的捕捉,就是对信号设置自定义信号函数,signal函数会直接修改信号表中对应信号的处理函数指针,使其指向自定义信号原创 2024-09-27 20:20:08 · 769 阅读 · 0 评论 -
第五部分:4---Linux闹钟机制
闹钟机制:Linux 的闹钟机制为用户提供了一种设置和管理闹钟的方式。用户通过系统调用设置闹钟,操作系统负责在指定时间后处理这些闹钟。闹钟结构体和链表:操作系统为每个闹钟创建一个结构体对象,这个对象包含有关闹钟的信息,例如时间戳、信号类型、闹钟id、进程pid、处理函数指针等。操作系统维护一个链表或其他数据结构来存储这些闹钟对象。每当用户设置一个新闹钟,操作系统会将其添加到链表中。原创 2024-09-27 20:21:16 · 379 阅读 · 0 评论 -
第五部分:5---三张信号表,信号表的系统调用
信号的递达、未决、阻塞:信号的处理动作称为信号的递达。从信号产生到实际处理之间的状态称为信号未决。未决的信号保存在PCB的pending表中。信号可以被阻塞,这种状态称为信号阻塞,即信号被暂时保留不会立即递达。阻塞的信号保存在pending表中,直到阻塞解除后才被递达,也就是阻塞表block中对应信号位置被设为0。进程维护的三张信号表:每个进程维护三张表,用于管理信号:block表:表示是否对信号进行阻塞,1为阻塞,0为不阻塞。也成为信号屏蔽字表。pending表:即未决位图表,原创 2024-09-27 20:23:18 · 621 阅读 · 0 评论 -
第五部分:6---信号的递达
信号的递达流程:信号被生成后加入未决信号集,等待处理。如果信号被阻塞,则暂时不能递达;如果没有被阻塞,则可以递达并处理。如果信号未被阻塞,先从未决信号集中移除信号,再依据可处理信号集的设定执行默认操作或调用自定义处理函数。如果信号被阻塞,解除阻塞后,该信号需要被“立即”递达。信号在什么时候递达?进程在内核态返回到用户态时,进行信号的检测和处理。用户态和内核态:用户态是一种受控的状态,所能够访问的资源有限。内核态是操作系统的工作状态,能够访问大部分的系统资源。内核态、用户态在原创 2024-09-27 20:27:04 · 1235 阅读 · 0 评论 -
第五部分:7---信号的捕捉
信号递达期间,该信号会被屏蔽直到递达完成。当某个信号的处理函数被调用时,内核自动将当前信号加入进程的信号屏蔽字block中,当信号处理函数返回时自动恢复原来的信号屏蔽字。这样就保证了在处理某个信号时,如果这种信号再次产生,那么 它会被阻塞到当前处理结束为止。如果在调用信号处理函数时,除了当前信号被自动屏蔽之外,还希望自动屏蔽另外一些信号,则用sa_mask字段说明这些需要额外屏蔽的信号,当信号处理函数返回时自动恢复原来的信号屏蔽字。sigaction实现信号的捕捉:sigaction接口的功原创 2024-09-27 20:29:27 · 364 阅读 · 0 评论