linux系统
文章平均质量分 61
老王不让用
芝兰生于幽谷,不以无人而不芳; 君子修身立德,不为穷困而改节
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ifconfig 命令详解
参数说明-a 显示全部接口信息[root@controller hello]# ifconfig -aenp0s3: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500 inet 192.168.10.202 netmask 255.255.255.0 broadcast 192.168.10.255 inet6 fe80::a00:27ff:febc:4068 prefixl转载 2022-03-18 17:04:01 · 7532 阅读 · 0 评论 -
linux 下 {}大括号的用法
我们平时使用Linux的时候经常遇到这样一个问题,举例有这样一种情况:执行命令$ cp /etc/apt/sources.list /etc/apt/sources.list.bak这里面有个问题,明明 /etc/apt/sources 这几个字都是一样的,为什么要打两遍?这样的还算短了,要是更深层的目录,那花的力气可就大了。跟上面例子很相似的情况是:在备份一个文件,重命名一个文 件,或是创建一个链接,都要进行类似的操作,重复一个相同的路径。通常比较明智的做法是先 cd 到那个目录,然后在那个目录转载 2021-02-19 17:48:32 · 2115 阅读 · 0 评论 -
netstat 命令详解及实现原理
目录1netstat 概述1.1 Active Internet connections1.2 Active UNIX domain sockets2 netstat 命令参数3 netstat 常见用法3.1列出所有端口 (包括监听和未监听的)3.2列出所有处于监听状态的 Sockets3.3显示每个协议的统计信息3.4在 netstat 输出中显示 PID 和进程名称 netstat-p3.5在 netstat 输出中不显示主机,端口和用户名 (hos...原创 2020-11-05 14:07:45 · 21413 阅读 · 1 评论 -
Linux vmstat命令详解
目录1vmstat、虚拟内存概述1.1 虚拟内存原理2 vmstat 命令详解2.1vmstat 常用命令格式2.2使用实例2.2.1 输出结果字段说明1vmstat、虚拟内存概述vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。vmstat工具提供了一种低开销的系统性能观察方式。因为vmstat本身就是低开销工...转载 2020-11-04 16:00:35 · 2165 阅读 · 0 评论 -
linux mpstat 命令使用详解
mpstat是 Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPU系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。目录1mpstat命令1.1 命令格式2使用2.1 每隔1s输出所有cpu的使用情况2.2 查看软中断统计信息2.3查看软中断总数统计1mpstat命令1.1 命令格式mpstat [ -A ] [ -u ] ...转载 2020-11-04 15:09:04 · 2636 阅读 · 0 评论 -
Linux watch命令详解
简介watch是一个非常实用的命令,基本所有的 Linux 发行版都带有这个小工具,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。你可以拿他来监测你想要的一切命令的结果变化,比如 tail 一个 log 文件,ls 监测某个文件的大小变化,看你的想象力了!命令格式:watch[参数][命令]其它操作:切换终端:Ctrl + X 退出watch:Ctrl + G命令功能:可以将命令的输...转载 2020-11-04 13:54:48 · 682 阅读 · 0 评论 -
Linux安全审计 auditd 服务
目录1 audit 功能引入2 查看运行状态3 auditd的相关的工具4 监控规则添加 auditctl4.1 监控文件和目录的更改4.2查看已配置的规则5 查看审计日志 ausearch5.1 审计文件5.2 审计目录6 查看审计报告aureport6.1审计活动概述6.2 授权失败6.3 账户与修改相关事件1 audit 功能引入linux 系统中有着大量的配置文件,有些文件涉及和内核驱动的交互,一旦被异常修改会导致一些未知的错误,如...原创 2020-10-15 22:40:59 · 10485 阅读 · 0 评论 -
linux内核信号的处理过程
目录1、什么是信号2、进程对信号的响应操作3、注册信号处理函数4、Linux下信号处理机制4.1、进程如何发现和接受信号?4.2、信号检测和响应时机4.3、进入信号处理函数4.4、信号处理函数执行完后怎么办?1、什么是信号信号本质上是在软件层次上对中断机制的一种模拟,其主要有以下几种来源:程序错误:除零,非法内存访问…外部信号:终端Ctrl-C产生SGINT信号,定时器到期产生SIGALRM…显式请求:kill函数允许进程发送任何信号给其他进程或进程组。转载 2020-09-10 14:14:20 · 2438 阅读 · 2 评论 -
一次用户态进程死循环案例的分析
1、问题现象业务进程(用户态多线程程序)挂死,操作系统反应迟钝,系统日志没有任何异常。从进程的内核态堆栈看,看似所有线程都卡在了内核态的如下堆栈流程中:[root@vmc116 ~]# cat /proc/27007/task/11825/stack[] retint_careful+0x14/0x32[] 0xffffffffffffffff2、问题分析2.1、内核堆栈分析从内核堆栈看,所有进程都阻塞在 retint_careful上,这个是中断返回过程中的流程,代码(汇编)如下:转载 2020-09-11 19:15:42 · 963 阅读 · 0 评论 -
Linux 下系统调用过程以及方法
目录1、系统调用过程2、系统调用三种方法2.1、通过 glibc 提供的库函数2.2、使用 syscall 直接调用2.3、通过 int 指令陷入系统调用(System Call)是操作系统为在用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口。当用户进程需要发生系统调用时,CPU 通过软中断切换到内核态开始执行内核系统调用函数。1、系统调用过程以 Linux 0.11 为例简述调用过程,没有查证现代操作系统是否有所变化,不过基本思路应该差不多。如下转载 2020-09-09 18:44:30 · 5887 阅读 · 0 评论 -
Linux中 /proc/[pid] 目录各文件简析
Linux 内核提供了一种通过 proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过 proc 得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取 proc 文件时,proc 文件系统是动态从系统内核读出所需信息并提交的。下面列出的这些文件或子文件夹,并不是都是在你的系统中存在,这取决于转载 2020-09-09 14:19:15 · 2888 阅读 · 0 评论 -
linux系统:pstack命令追踪进程的调用栈。
pstack命令用来显示进程的栈(用户态)跟踪。 pstack 命令必须由相应进程的属主或root账号运行。可以使用pstack来确定进程挂起的位置。此命令只有一个参数,那就是 pid。这里的pid可以是进程pid也可以是线程的 tid,当参数为 tid 时,pstack会将当前线程的调用栈打印出来,当参数为pid时则会将当前进程下所有线程的调用栈全部打印出来。具体关于pstack的简要介绍可以查看man手册。简单的多线程例子如下:#include<stdio.h>#include<原创 2020-09-05 14:20:07 · 1999 阅读 · 0 评论 -
linux 系统级性能分析工具 perf 的介绍与使用
目录1. 背景知识1.1 tracepoints1.2 硬件特性之cache2. 主要关注点3. perf的使用3.0 perf引入的overhead3.1 perf list3.2 perf top3.3 perf stat3.4 perf bench3.4.1 perf bench sched all3.4.2 perf bench mem all3.4.3 perf bench futex3.4 perf record3.5 perf rep转载 2020-09-04 17:21:00 · 6037 阅读 · 0 评论 -
strace 命令详解
目录1、strace是什么?2、strace能做什么?3、strace怎么用?4、strace问题定位案例4.1、定位进程异常退出4.2、定位共享内存异常4.3、 性能分析5、总结1、strace是什么?按照strace官网的描述, strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。strace底层使用内核的ptrace特性来实现其功能。在运维的日常工作中,故转载 2020-09-03 16:05:26 · 1075 阅读 · 0 评论 -
Linux 编程之共享内存
1、共享内存定义 共享内存就是允许两个或多个进程共享同一片内存,即多个进程访问的是同一片物理内存。因此,当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。相比较socket、管道等进程通信方式,共享内存无疑是最快的一种。但是共享内存中没有任何的同步与互斥机制,这一点需要额外实现,无非也就是加一把锁而已。 共享内存的生命周期随内核。即所有访问共享内存区域对象的进程都已经正常结束,共享内存区域对象仍然在内核中存在(除非显式删除共享内存区域对象),在内核重新引导之...原创 2020-08-02 15:08:03 · 682 阅读 · 0 评论 -
Linux 编程之孤儿进程和僵尸进程
目录1、孤儿进程2、僵尸进程1、孤儿进程定义:没有父进程的进程,unix环境中,当父进程比子进程先退出,子进程变为孤儿进程,linux环境中的1号进程 "/sbin/init" 接管系统中的所有的孤儿进程,因此此时子进程的父进程变为1号进程,代码如下:... if((pid = fork()) < 0) { printf("fork error\n"); } else if(pid == 0) { printf("child:self_pid=%d,parent原创 2020-08-02 15:12:12 · 478 阅读 · 0 评论 -
Linux:5 种 I/O 模型
目录前言1、5种IO模型1.1、阻塞IO模型1.2、非阻塞IO模型1.3、IO复用模型1.4、信号驱动IO模型1.5、异步IO模型2、各种 I/O 模型比较2.1、阻塞IO调用和非阻塞IO调用、阻塞IO模型和非阻塞IO模型2.2、同步IO和异步IO前言 IO (Input/Output,输入/输出)即数据的读取(接收)或写入(发送)操作,通常用户进程中的一个完整 IO 分为两阶段:用户进程空间<-->内核空间、内核空间<--&g...转载 2020-05-08 20:02:44 · 875 阅读 · 0 评论 -
linux系统:再次认识 free 指令(buffers 和 cached之间的差异)
free 命令相对于top 提供了更简洁的查看系统内存使用情况:$ free total used free shared buffers cachedMem: 255268 238332...转载 2020-04-27 22:49:57 · 1069 阅读 · 1 评论 -
Linux:页表中PGD、PUD、PMD、TLB等概念介绍
TLB:Translation lookaside buffer,即旁路转换缓冲,或称为页表缓冲;里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。又称为快表技术。由于“页表”存储在主存储器中,查询页表所付出的代价很大,由此产生了TLB。 X86保护模式下的寻址方式:段式逻辑地址—〉线形地址—〉页式地址;页式地址=页面起始地址+页内偏移地址;对应于虚拟地址:叫page(页面);...转载 2020-03-23 14:14:15 · 12287 阅读 · 1 评论 -
Linux系统:page fault
Linux进程如何访问内存Linux下,进程并不是直接访问物理内存,而是通过内存管理单元(MMU)来访问内存资源。原因后面会讲到。为什么需要虚拟内存地址空间假设某个进程需要4MB的空间,内存假设是1MB的,如果进程直接使用物理地址,这个进程会因为内存不足跑不起来。既然进程不是直接访问物理内存,那么进程中涉及的内存地址当然也不是物理内存地址。而是虚拟的内存地址,虚拟的内存地址和物理...转载 2020-03-22 21:48:40 · 10448 阅读 · 2 评论 -
socket编程:阻塞式、非阻塞 I/O模型实现
目录1、IO工作模式分类2、socket中的网络I/O工作模式原理2.1、阻塞式I/O模型2.2、非阻塞式I/O模型2.3、I/O复用模型2.4、异步I/O模型2.5、IO工作阶段3、IO工作模式实验3.1、阻塞、非阻塞式I/O3.2、I/O复用1、IO工作模式分类Bio(BlockingI/O):默认工作模式,阻塞式I/O操作,没有任何优化技术处理...原创 2020-03-09 13:58:13 · 987 阅读 · 0 评论 -
dpdk 应用层对网卡进行配置
dpdk用户态驱动初始化完成后,应用层就可以来对网卡进行设置操作。对于每一个网卡,应用层都需要调用相应接口进行配置。可以对网卡进行哪些设置操作呢? 例如应用层将对网卡进行配置下发,将配置信息下发给网卡;应用层对网卡接收队列进行设置;应用层对网卡发送队列进行设置;应用层启动网卡等操作。以l2fwd为例, 应用层调用rte_eth_dev_configure进行配置下发; 调用rte...转载 2020-01-21 15:20:58 · 4523 阅读 · 4 评论 -
dpdk uio驱动实现
目录1、dpdk uio驱动框架2、用户态驱动pmd轮询与uio中断的关系3、dpdk uio驱动的实现过程3.1、igb_uio驱动初始化3.2、驱动探测probe3.2.1 激活pci设备3.2.2 为pci设备预留内存与io空间3.2.3 为pci网卡设置dma模式3.2.4 将pci网卡的物理空间以及io空间暴露给uio设备3.2.5 设置uio...转载 2020-01-20 14:57:00 · 2613 阅读 · 1 评论 -
dpdk内存池 mpool 实现机制
dpdk可以通过两种方式来管理内存, 一种是调用rte_malloc, 在大页内存上申请空间; 另一种是使用内存池,也是通过在大页内存上申请空间方式。 两种有什么区别呢?虽然两者最终都是在大页内存上获取空间,但内存池这种方式直接在大页内存上获取,绕开了rte_malloc调用。rte_malloc一般用于申请小的内存空间。通常在需要非常大的缓冲区时,在大页内存上一次性申请一个大的缓冲...转载 2020-01-19 13:33:56 · 3736 阅读 · 0 评论 -
dpdk大页内存实现
前言 所谓的dpdk大页内存的实现,说白了就是dpdk自己实现了一套大页内存的使用库,这个和libhugetlbfs.so是类似的,就是自己实现了大页内存的申请,释放操作, 替代了传统的malloc, free系统调用。先从整体上看下dpdk大页内存有哪些内容。 当应用层需要申请内存时,直接调用rte_malloc接口进...转载 2020-01-15 14:43:16 · 1515 阅读 · 0 评论 -
dpdk大页内存原理
前言 在分析dpdk大页内存的源码之前,有必要对linux内存管理的原理以及大页内存的原理有个了解,缺少这些底层基础知识,分析dpdk大页内存的源码将举步维艰。这篇文章详细介绍下linux内存管理以及大页内存的方方面面,为分析dpdk大页内存源码扫除障碍。目录1、linux内存管理原理1.1、mmu内存管理的引入1.2、页表的演化1.2.1、一级页表...转载 2020-01-15 14:06:32 · 2410 阅读 · 1 评论 -
Linux 大页面使用与实现简介
引言 随着计算需求规模的不断增大,应用程序对内存的需求也越来越大。为了实现虚拟内存管理机制,操作系统对内存实行分页管理。自内存“分页机制”提出之始,内存页面的默认大小便被设置为 4096 字节(4KB),虽然原则上内存页面大小是可配置的,但绝大多数的操作系统实现中仍然采用默认的 4KB 页面。 4KB 大小的页面在“分页机制”提出的时候是合理的,因为当时的内存大小不过几十兆字节,然...转载 2020-01-14 11:00:17 · 1157 阅读 · 0 评论 -
Linux中挂载详解以及mount命令用法
挂载概念 Linux中的根目录以外的文件要想被访问,需要将其“关联”到根目录下的某个目录来实现,这种关联操作就是“挂载”,这个目录就是“挂载点”,解除次关联关系的过程称之为“卸载”。注意:“挂载点”的目录需要以下几个要求: 1、目录事先存在,可以用mkdir命令新建目录; 2、挂载点目录不可被其他进程使用到; 3、挂载点下原有文件将被隐藏。...转载 2020-01-14 10:25:08 · 845 阅读 · 0 评论 -
Linux内核巨页代码解析和使用
前言巨页的实现,涉及到两个模块:hugetlb 和 hugetlbfs。hugetlb 相当于是 huge page 页面管理者,页面的分配及释放,都由此模块负责。hugetlbfs 则用于向用户提供一套基于文件系统的巨页使用界面,其下层功能的实现,则依赖于 hugetlb。目录1、hugetlb模块2、hugetlbfs模块3、使用巨页3.1、 mmap方式3.2...转载 2020-01-13 20:02:58 · 3259 阅读 · 0 评论 -
Linux用户进程与内核进程之间的通信手段概述
Linux系统根据进程的寻址空间将其分为:内核进程和用户进程,以32位系统为例,内核进程寻址范围:3~4G,用户进程寻址范围:0~3G。内核进程和用户进程分别运行在内核空间和用户空间,彼此隔离。所有的内核进程均不能访问用户空间,共享内核空间地址:0xC0000000~0xFFFFFFFF。用户进程则不同,每一个进程都有自己独立的地址空间:0x00000000~0xBFFFFFFF,且...转载 2020-01-13 16:36:24 · 2121 阅读 · 0 评论 -
进程和线程的区别
操作系统面试题1、进程和线程的区别?解析:(1)进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元(2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进行至少包括一个线程。(3)进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销...转载 2020-01-11 14:53:54 · 404 阅读 · 0 评论 -
linux基础: du/df/free查看内存/磁盘剩余空间
目录1、du指令2、df命令3、free命令1、du指令 显示每个文件和目录的磁盘使用空间,df 是来自于coreutils 软件包,系统安装时,就自带的;我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置;du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,选项如下:...转载 2020-01-11 10:37:01 · 1353 阅读 · 0 评论 -
linux基础:存储映射I/O(mmap接口应用)
前言 存储映射I/O使一个磁盘文件与存储空间中的一个缓存相映射。于是当从缓存中取数据,就相当于读文件中的相应字节。与其类似,将数据存入缓存,则相应字节就自动地写入文件。这样,就可以在不使用read和write的情况下执行I/O。为了使用这种功能,应首先告诉内核将一个给定的文件映射到一个存储区域中。这是由mmap函数实现的,接口如下:#include <sys/mman....原创 2020-01-09 18:53:11 · 1353 阅读 · 0 评论 -
Linux errno详解之系统常见错误信息
Linux中系统调用的错误都存储于 errno中,errno由操作系统维护,存储就近发生的错误,即下一次的错误码会覆盖掉上一次的错误。PS: 只有当系统调用或者调用lib函数时出错,才会置位errno!查看系统中所有的errno所代表的含义,可以采用如下的代码:/* Function: obtain the errno string* char *strerror(...转载 2019-12-30 17:54:18 · 7210 阅读 · 0 评论 -
Linux命令之md5sum
1. 背景 在网络传输、设备之间转存、版本升级等均会涉及大文件传输,因此,可能会出现传输前后数据不一致的情况。这种情况在网络这种相对更不稳定的环境中,容易出现。那么校验文件的完整性,也是势在必行的。 md5sum命令用于生成和校验文件的md5值。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相同。md5值是一个128位的二...转载 2019-12-19 20:47:16 · 1467 阅读 · 0 评论 -
gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化
Gcc编译优化简介gcc提供了为了满足用户不同程度的的优化需要,提供了近百种优化选项,用来对{编译时间,目标文件长度,执行效率}这个三维模型进行不同的取舍和平衡。优化的方法不一而足,总体上将有以下几类:1)精简操作指令;2)尽量满足cpu的流水操作;3)通过对程序行为地猜测,重新调整代码的执行顺序;4)充分使用寄存器;5)对简单的调用进行展开等等。想全部了解这些编译选项,并在其中挑选适合的选...转载 2019-12-12 20:27:21 · 1356 阅读 · 0 评论 -
linux各种shell特色脚本使用
1、gdb断点信息收集自动化 鉴于在故障现场使用gdb跟踪,设置断点,打印断点处信息存在一定的时间差,且有造成单板重启或影响业务等问题,采用脚本实现自动化操作。脚本实现:./auto_gdb.sh ”进程号“ ”断点“ 举例:[root@localhost auto_gdb]# ./auto_gdb.sh 3565 ros_comm_periodic_sendgd...原创 2019-04-19 16:11:02 · 500 阅读 · 0 评论 -
X86-64寄存器和栈帧
概要说到x86-64,总不免要说说AMD的牛逼,x86-64是x86系列中集大成者,继承了向后兼容的优良传统,最早由AMD公司提出,代号AMD64;正是由于能向后兼容,AMD公司打了一场漂亮翻身战。导致Intel不得不转而生产兼容AMD64的CPU。这是IT行业以弱胜强的经典战役。不过,大家为了名称延续性,更习惯称这种系统结构为x86-64X86-64在向后兼容的同时,更主要的...转载 2019-05-20 16:18:37 · 4118 阅读 · 0 评论 -
Linux下的系统级性能分析工具—perf
1.问题的提出在我们日常开发中,往往需要进行性能优化的工作,而一个好的工具往往能让我们事半功倍,取到不错的效果。目前网络上可用的性能分析工具也比较多,除了intel开发的拥有强大集成功能的Vtune、成研早期提供的kprofile、以及linux开源项目oprofile。从3.6.31版本开始,linux提供了基于oprofile并且更加完善,更加便利直观的性能分析工具perf结合这...原创 2019-06-26 15:29:43 · 635 阅读 · 1 评论 -
死锁,活锁,饿死,优先级反转,护航现象 (转)
转载:https://www.cnblogs.com/roadmap99/p/6868946.html死锁(deadlock)是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。虽然进程在运行过程中,可能发生死锁,但死锁的发生也必须具备一定的条件,死...转载 2019-07-02 16:19:08 · 797 阅读 · 0 评论
分享