首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    最后防线: Linux进程实时监控

    数据量的考虑:每次调用都是采集当前系统所有的进程,大量冗余数据,需要做不少过滤工作,否则会导致数据暴增。...读取proc文件系统 ---- 按照Unix哲学一切皆文件,ps命令肯定是读取某些文件来获取这些信息。在《Unix环境高级编程》这本书都提到过ps的实现,是读取proc文件系统的。...使用strace ps可以看到,ps就是读取proc文件系统的。...取一条ps的结果来对照一下proc文件系统能够获取的内容 UID PID PPID C STIME TTY TIME CMD root 1326...而且通过阅读proc的手册知道,从proc文件系统还可以得到进程很多信息: cpu使用量 内存使用量 句柄数量和信息 线程数量和信息 端口和网络数据信息 命名空间信息

    1.7K10

    分别查找主机占用CPU和占用内存最大的进程,要求能查出进程PID,启动目录,启动命令,占用文件描述符数量,占用端口

    它以文件系统的方式为访问系统内核数据的操作提供接口。 用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。...除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。...子文件或子文件夹 /proc/buddyinfo 每个内存区中的每个order有多少块可用,和内存碎片问题有关 /proc/cmdline 启动时传递给kernel的参数信息 /proc/cmdline.../proc/interrupts x86架构中的每个IRQ(IRQ全称为Interrupt Request,即是“中断请求”的意思,IRQ的作用就是在我们所用的电脑中,执行硬件中断请求的动作,比如我们需要读取硬盘中的一段数据时...,当数据读取完毕,硬盘就通过IRQ来通知系统,相应的数据已经写到指定的内存中了)中断数 /proc/iomem 每个物理设备当前在系统内存中的映射 /proc/ioports 一个设备的输入输出所使用的注册端口范围

    1.6K40

    自动驾驶 Apollo 源码分析系列,系统监控篇(四):Monitor模块如何监控进程 Process 的存活状态?

    工作流程分为 4 个步骤: 获取正在运行的进程列表 检测 HMI 中配置的 Module 运行信息 检测受监控的模块运行信息 检测其他组件运行信息 2 获取可运行进程信息 这里通过读取 /proc/pid...而/proc/pid/cmdline是一个只读文件,里面存储了相应的进程启动命令行参数。 由于在 cmdline 文件下的命令行信息分割符是 ‘\0’,所以,需要把它们替换成空格。 3....代码很简单,拿 running_processes 中的文本和传入的模块名字匹配,匹配上了就是 OK 的状态结果,否则就是 FATAL 的结果。 4....核心逻辑是通过程序读取 /proc/pid/cmdline 文件获取到了正在运行的进程名字,然后通过与 HMI 配置的模块名字或者是受监控的组件名字相匹配进行状态的判断。...后来,我仔细想了想,因为在代码中执行 ps 命令,需要产生额外的开销,而直接读取一个 proc 文件开销较小,由于进程监控是持续性的,所以,读取 cmdline 这个方式比较好。

    83720

    CVE-2019-5736 docker-runc escape 漏洞复现

    简要描述如下:命名空间作用介绍Mount用来隔离文件系统的挂载点, 使得不同的Mount namespace拥有自己独立的挂载点信息PID用来隔离进程的ID空间,使得不同PID namespace里的进程...系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口,目录里面存储着许多关于进程的信息,列如进程状态status,进程启动时的相关命令cmdline...还一个 /proc/pid/exe 文件,这个文件指向进程本身的可执行文件。而/proc/self目录则是读取进程本身的信息接口,是一个link,链接到当前正在运行的进程。...ls监听结果如下:首先运行了docker-runc init ,然后执行了ls,可以看见运行的过程中pid号一直保持为39,我们可以很容易想到启动的时候调用了execve()。...我们可以得到runc 进程的pid号,并且我可以访问这个pid号下所有关于runc 的信息。

    55320

    为何killall有时找不到你的进程?killall是干什么的?

    在Linux下有很多命令用于杀死进程,它们可以用于不同的场景,例如通过进程名杀死进程,通过pid杀死进程。...) = 0 打印结果很多,我只提取了部分,可以看到的是,killall会去proc文件系统(proc文件系统可以参考《Linux中不可错过的信息宝库》)下查找各个进程...至此我们可以猜测,killall命令会去读取进程在proc文件系统中的stat文件里的名字。那么如果这么名字和你要杀死的进程对不上不就找不到了吗? 至此,想必你已经明白前面问题的原因了。...: $ gcc -o hello hello.c $ cat /proc/pid/stat #这里的pid换成示例的进程id 16441 (bianchengzhuji) S 6335 16441 6335...总结 如果你发现你的程序无法通过killall 进程名的方式杀死的话,不妨看看proc文件系统中这个进程的stat文件或者status文件中的名。

    1.7K10

    Linux内核中的递归漏洞利用

    值得注意的是每个进程的“mem”,“ environ”和“cmdline”文件,因为访问这些文件会同步访问目标进程的虚拟内存。这些文件显示了不同的虚拟内存地址范围: 1....接下来,假设/proc/$pid/mem的映射有一些错误,那么在进程C里的内存读取错误,将会导致从进程B中映射的内存出错,进而导致进程B里出现其它的内存错误,进而导致从A进程映射的内存出错,这就是一个递归内存错误...可是,现实中这是不可行的,“mem”,“environ”,“cmdline ”文件只能用VFS函数读写,mmap无法使用: staticconst struct file_operations proc_pid_cmdline_ops...因此从开始读取 /proc/$/A 总是会返回-EIO,而且 /proc/$A/mem 不会有一个合法的 ecryptfs 文件头。如此,environ 和 cmdline 文件才有攻击的可能性。...读取 /proc/$B/environ ,进而导致进程B中的内存错误。

    2.3K60

    基于DaemonSet的Process Exporter监控实践指南

    而使用process-exporter采集的是进程的指标,具体来说就是采集/proc/pid/stat中与cpu时间有关的数据: 第14个字段:utime,进程在用户态运行的时间,单位为jiffies...注意:实测发现,process-exporter获取的数据与/proc/pid/stat中的有一定差异,需要进一步看下。...,包括哪些还没有实际加载到内存中的代码和数据,可以从/proc/pid/status中的VmSize获取 对于一般的程序来说,重点关注的肯定是实际内存,也就是resident和virtual,分别表示实际在内存中占用的空间和应该占用的总空间.../ 可以看到,面板中的cpu和读写是直接基于指标和rate函数得到的,内存则是直接基于指标而来的。...{{.Username}}:进程的有效用户名 {{.Matches}}:用正则匹配cmdline等字段时得到的匹配项的map,例如下面的Cfgfile {{.PID}}:pid,使用pid表示这个组只会有这一个进程

    37820

    用 Python 脚本实现对 Linux 服务器的监控

    与其他文件系统不同,/proc 存在于内存而不是硬盘中。...proc 文件系统提供的信息如下: 进程信息:系统中的任何一个进程,在 proc 的子目录中都有一个同名的进程 ID,可以找到 cmdline、mem、root、stat、statm,以及 status...表 1 是 /proc 目录中的主要文件的说明: 表 1 /proc 目录中的主要文件的说明 文件或目录名称 描 述 apm 高级电源管理信息 cmdline 这个文件给出了内核启动的命令行 CPUinfo.../proc/net/dev 中的信息,Python 中文件操作可以通过 open 函数,这的确很像 C 语言中的 fopen。...每种方法可以接受一个变量以限制每次读取的数据量,但它们通常不使用变量。 .read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。

    1.6K30

    BUU-N1BOOK-第一章

    (如果有书请翻看:P39-1.3.2文件读取漏洞常见读取路径)在Linux系统中,服务器信息(绝对路径)中有一个/proc目录 关于/proc目录: 通常存储着进程动态进行的各种信息,本质上是一种虚拟目录...1.对应目录下的cmdline可读出比较敏感的信息,如使用mysql -uxxx -pxxxx登录MySQl,会在cmdline中显示明文密码: /proc/[pid]/cmdline ([pid...]指向进程所对应的终端命令) 2.有时候我们无法获取当前应用所在的目录,通过cwd命令可以直接跳转到当前目录: /proc/[pid]/cwd/ ([pid]指向进程的运行目录) 3.环境变量中可能存在...secret_key,这时也可以通过environ进行读取: /proc/[pid]/environ ([pid]指向进程运行时的环境变量) 所以综上所述利用这个name参数获取当前执行系统命令.../proc/self/cmdline 得到python server.py,然后查看server.py的源代码: payload:URL/article?name=../../../../..

    1.2K10

    Linux中不可错过的信息宝库

    而数字本身就是该进程的pid。也就是说,如果想要知道某个进程当前更多的状态信息,只需要知道该进程的pid(参考ps命令常见实用用法),然后读取/proc/pid下的文件夹或文件内容即可。...,包括: cmdline 用于开始进程的命令 cwd 当前进程工作目录的一个符号链接 environ 可用进程环境变量的列表 exe 正在进程中运行的程序链接 fd/ 这个目录包含了进程打开的文件描述符...这里我们可以查看/proc/pid下的limits中的文件描述符限制数量: sed -n "/open/p" limits Max open files 1024..."^l" | wc -l 4 这里得到的大小为4,很显然没有超出打开的最大文件数量限制。.../proc/pid下的内容对于问题的定位也十分地有帮助,本文只有简单举例,更多的使用也会在后续文章中不断应用。

    1.1K10

    为什么ps中CPU占用率会有超出%100的现象?

    我们知道在/proc目录下每个进程都会有一个以它的PID以名字的目录,这个目录中有一个stat文件,它包含了和这个进程状态相关的各种信息,它的各个数值对应的含义在内核文档的Documentation/filesystems...和utime,而ps就是查看这个文件来获得进程运行的时间,从而计算出%CPU,那么stat这个文件中的stime和utime是怎样得到的呢?...在fs/proc/array.c中定义了下面两个函数 int proc_tgid_stat(struct task_struct *task, char *buffer) {     return do_task_stat...(task, buffer, 0); } 在每次读取进程状态信息时,proc文件系统就是调用这两个函数来填充数据的,它们的区别只有调用do_task_stat时传递的最后一个参数不同,看一下do_task_stat...这样就可以解释为什么%CPU字段有超过100%了,因为分子是这个进程(线程组)中所有线程运行的时间,而在同一时刻,同一线程组中的两个不同线程可能在两个不同的CPU上运行,这样总的运行时间就有可能超过物理上真正过去的时间

    2.3K20

    Android系统启动——2init进程

    %s", dp->d_name); property_set(property_name.c_str(), dt_file.c_str()); } } 上面这个函数主要是在/proc...第二步:调用import_kernel_cmdline函数,就是读取proc/cmdline中的内容。这个函数有两个有两个参数,第一个采纳数标识当前Android十倍是否是模拟器。...import_kernel_cmdline函数将/proc/cmdline内容读入到内存缓冲区中,并将cmdline内容以空格拆分为小段字符串,依次传递给import_kernel_nv函数处理。...对于android模拟器,存在/proc/cmdline中存在"qemu=1"字段。如果for_emulator为1,则将生成ro.kernel....这种类型为"chorded keyboard"的键盘设备通过不同的按键组合来描述不同的命令或者操作,它对应的设备为/dev/keychord。

    3K20

    centos proc目录简介

    它以文件系统的方式为访问系统内核数据的操作提供接口。 用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。...由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。...除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。...子文件或子文件夹 /proc/buddyinfo 每个内存区中的每个order有多少块可用,和内存碎片问题有关 /proc/cmdline 启动时传递给kernel的参数信息 /proc/cpuinfo...显示内存空间的统计信息,对分析虚拟内存行为很有用 以下是/proc目录中进程N的信息 /proc/N pid为N的进程信息 /proc/N/cmdline 进程启动命令 /proc/N/cwd

    2.7K10

    How to get performance data in Android

    vmstat结果中r,b,in,cs是通过 /proc/stat 文件计算得到的,si,so,bi,bo是通过 /proc/vmstat 文件计算得到的。...除此之外,时间间隔是从/proc/uptime中读取计算出的差值,该文件中保存的是系统从启动到当前时刻的时间,单位是秒。...如果计算后者的话,可以从/proc/stat的intr中读取从系统启动到当前时刻总共发生的中断数来计算差值。 参考资料:vmstat命令详解 5....在linux中,一个节拍大致可理解为操作系统进程调度的最小时间片,不同linux内核可能值有不同,通常在1ms到10ms之间。...进程/线程的占用信息 进程数据文件的节点: /proc/[pid] 线程数据文件的节点: /proc/[pid]/task/[tid] 进程和线程的状态信息从stat文件中获取,名称从cmdline文件中获取

    92220

    Prometheus Process-exporter 监控进程状态

    7,process exporter 模板变量 {{.Comm}}包含原始可执行文件的名称,第二个字段/proc/pid>/stat {{.ExeBase}}包含可执行文件的基本名称 {{.ExeFull...}}包含可执行文件的路径 {{.Username}}包含有效用户的用户名 {{.Matches}}映射包含应用 cmdline 正则表达式产生的匹配项 {{.PID}}包含进程的 PID。...使用 PID 意味着该组将只包含一个进程。 {{.StartTime}}包含进程的开始时间。.../Sleeping/Other/Zombie状态的进程数 namedprocess_namegroup_states 获取/proc/[pid]/stat 进程CPU utime、stime状态时间 namedprocess_namegroup_cpu_seconds_total...获取/proc/[pid]/io 进程读取字节数 namedprocess_namegroup_read_bytes_total 获取/proc/[pid]/io 进程写入字节数 namedprocess_namegroup_write_bytes_total

    6.6K20
    领券