【netcfg源码】【网站访客源码】【加壳软件源码】linux进程监控源码_linux 进程监控

2024-11-24 21:01:38 来源:驱动还原 源码 分类:百科

1.Monit - 用于管理和监控 Linux 系统的进进程监控开源工具
2.从Linux内核源码的角度深入解释进程(图例解析)
3.Linux安装使用pidstat命令以对进程数据进行监控
4.关于linux服务器进程监控及自动重启的方法介绍
5.Linux内核源码解析---cgroup实现之整体架构与初始化
6.Linux性能监控之CPU平均负载、使用率监控、程监进程监控

linux进程监控源码_linux 进程监控

Monit - 用于管理和监控 Linux 系统的控源开源工具

       Monit是一个免费的开源工具,能够自动监控和管理UNIX/Linux系统中的进进程监控进程、文件、程监目录、控源netcfg源码校验和、进进程监控权限、程监文件系统和服务。控源

       它提供了用户友好的进进程监控Web界面,可以通过本机HTTP(S)Web服务器或命令行界面查看系统状态和设置进程。程监需要注意的控源是,为了访问和查看Monit Web界面,进进程监控您需要在系统上安装Apache或Nginx等Web服务器。程监

       Monit的控源功能十分丰富,包括在进程未运行时启动进程,如果没有响应则重新启动进程,并在使用高资源时停止进程。此外,它还能监视文件、目录和文件系统的更改、校验和更改、文件大小更改或时间戳更改。Monit还能监控远程主机的TCP/IP端口、服务器协议和ping,并保留自己的日志文件,就任何严重错误情况和恢复状态发出警报。

       本文将为您提供一个简单指南,介绍如何在基于RHEL和基于Debian的Linux发行版上安装和配置Monit。

       首先,在Linux中安装Monit。默认情况下,Monit监控程序在默认的系统基础存储库中不可用,您需要添加并启用第三方epel存储库才能在CentOS、Rocky Linux和AlmaLinux等基于RHEL的发行版下安装Monit包。对于Ubuntu/Debian/Linux Mint用户,可以使用apt命令轻松安装。网站访客源码

       其次,在Linux中配置Monit。Monit的配置文件易于阅读,每2分钟监控一次正在运行的服务,并将日志保存在“/var/log/monit”中。Monit有一个在端口上运行的Web界面。要启用Web界面,您需要在Monit配置文件中进行更改。

       配置完成后,您需要启动、启用和验证Monit服务以重新加载新的配置设置。现在,您将能够通过导航到相应的URL来访问Monit Web界面,并输入用户名“admin”和密码“monit”。

       最后,将Linux服务添加到监控中。一旦正确设置了Monit Web界面,开始将您要监控的程序添加到相应的配置文件中。以下是一些有用的Monit配置示例,它们对于了解服务如何运行、将其配置文件保存在何处、如何启动和停止服务等非常有帮助。

从Linux内核源码的角度深入解释进程(图例解析)

       进程,作为操作系统的基本概念,是程序执行过程的体现,自计算机诞生以来,其工作原理沿用冯诺依曼架构。从代码编译生成的可执行文件在特定环境中加载到内存,便构成了一个执行中的进程。进程的生命周期涉及启动、状态转换、执行和退出等阶段。在Linux中,进程的创建始于fork调用,通过复制当前进程生成新进程,接着通过exec初始化新进程地址空间,加壳软件源码进入就绪状态等待调度。

       进程在操作系统中被抽象为task_struct,这个庞大的结构体,即进程描述符,记录了进程的全部属性和操作,包括进程ID(pid)和状态。查看进程ID和父进程ID可以通过特定命令。状态字段通过long类型表示,其他细节可以通过源码深入探究。

       创建进程涉及fork和copy_process函数,fork仅复制轻量级信息,使用写时复制技术避免数据冲突。fork后的子进程在必要时通过exec开始独立执行。在Linux中,线程和进程本质上是相同的,区别在于资源的共享程度。

       进程调度采用抢占式策略,如CFS(完全公平调度)通过虚拟运行时来实现公平调度,通过时间记账和红黑树组织队列来高效选择进程。进程退出时,会清理资源并可能转化为孤儿进程,由特定进程接管。理解这些原理有助于深入理解Linux内核对进程的管理机制。

Linux安装使用pidstat命令以对进程数据进行监控

       如何安装pidstat

       pidstat 是sysstat软件套件的一部分,sysstat包含很多监控linux系统状态的工具,它能够从大多数linux发行版的软件源中获得。

       在Debian/Ubuntu系统中可以使用下面的命令来安装

       # apt-get install sysstat

       CentOS/Fedora/RHEL版本的linux中则使用下面的命令:

       # yum install sysstat

       使用pidstat

       使用pidstat不加任何参数等价于加上-p参数,但是只有正在活动的任务会被显示出来。

       # pidstat

       在结果中你能看到如下内容:

       PID - 被监控的任务的进程号

       %usr - 当在用户层执行(应用程序)时这个任务的cpu使用率,和 nice 优先级无关。注意这个字段计算的cpu时间不包括在虚拟处理器中花去的时间。

       %system - 这个任务在系统层使用时的cpu使用率。

       %guest - 任务花费在虚拟机上的cpu使用率(运行在虚拟处理器)。

       %CPU - 任务总的cpu使用率。在SMP环境(多处理器)中,如果在命令行中输入-I参数的java人脸识别源码话,cpu使用率会除以你的cpu数量。

       CPU - 正在运行这个任务的处理器编号。

       Command - 这个任务的命令名称。

       I/O 统计数据

       通过使用-d参数来得到I/O的统计数据。比如:

       # pidstat -d -p

       IO 输出会显示一些内的条目:

       kB_rd/s - 任务从硬盘上的读取速度(kb)

       kB_wr/s - 任务向硬盘中的写入速度(kb)

       kB_ccwr/s - 任务写入磁盘被取消的速率(kb)

       页面失败和内存使用

       使用-r标记你能够得到内存使用情况的数据。

       重要的条目:

       minflt/s - 从内存中加载数据时每秒出现的小的错误的数目,这些不要求从磁盘载入内存页面。

       majflt/s - 从内存中加载数据时每秒出现的较大错误的数目,这些要求从磁盘载入内存页面。

       VSZ - 虚拟容量:整个进程的虚拟内存使用(kb)

       RSS - 长期内存使用:任务的不可交换物理内存的使用量(kb)

       举例

       1. 你可以通过使用下面的命令来监测内存使用

       # pidstat -r 2 5

       这会给你5份关于page faults的统计数据结果,间隔2秒。这将会更容易的定位出现问题的进程。

       2. 显示所有mysql服务器的子进程

       # pidstat -T CHILD -C mysql

       3. 将所有的统计数据结合到一个便于阅读的单一报告中:

       # pidstat -urd -h

       上面就是Linux安装使用pidstat的方法介绍了,通过本文的介绍,相信你对系统监控命令pidstat的用法有了一定的了解

关于linux服务器进程监控及自动重启的方法介绍

       本周开始,新手游进行删档封测阶段,前两天表现还好,今天更新后出现几次宕机行为,比较影响玩家的测试和体验,我们的服务器管理系统尚未完善,为了晚上能够预防宕机造成损失,先用一种简单的方案临时顶替一下。

       实现原理主要是使用linux提供的crontab机制,定时查询服务器进程是否存在,如果宕机则处理我们预设的脚本。

首先我们要向crontab加入一个新任务。

       # crontab -e:进入编辑状态,其实就是使用vi编辑。

       */1 * * * * sh /root/monitor.sh

       我这里只是简单的设置每分钟调用一个shell脚本monitor.sh。这里可以配置的更强大,大家可以去搜索一下crontab的教程,网上有很多这类的教程。

       这里需要注意的是,很多教程配置command的时候直接使用/root/monitor.sh,我设置的时候发现这样配置不会执行shell脚本,前面加上sh后就能执行了。口袋微博源码

然后我们开始写monitor.sh这个shell脚本。

       #! /bin/sh    proc_name="WorldFrame_d"

       #进程名  proc_num()

        #查询进程数

       {

       num=`ps -ef | grep $proc_name | grep -v grep | wc -l`

       return $num}proc_num  number=$?

       #获取进程数量

       if [ $number -eq 0 ]

       #如果进程数量为0then

        #重新启动服务器,或者扩展其它内容。

       cd /longwen/server/sbin/linux; ./WorldFrame_d -c 1fi

       我这个脚本,只是简单的检测了进程是否存在,不存在就自动重启服务器。

       这里其实也可以扩展一下,比如对日志文件的处理以及重启时间等的记录等等。

       需要注意的是在windows编辑sh文件要注意格式问题(CR/LR),否则容易出现sh执行错误的BUG。

       好了,进行测试吧,我这里测试OK,记录一下,希望能帮到其它遇到类似问题的同学。谢谢阅读,希望能帮到大家,请继续关注脚本之家,我们会努力分享更多优秀的文章。

Linux内核源码解析---cgroup实现之整体架构与初始化

       cgroup在年由Google工程师开发,于年被融入Linux 2.6.内核。它旨在管理不同进程组,监控一组进程的行为和资源分配,是Docker和Kubernetes的基石,同时也被高版本内核中的LXC技术所使用。本文基于最早融入内核中的代码进行深入分析。

       理解cgroup的核心,首先需要掌握其内部的常用术语,如子系统、层级、cgroupfs_root、cgroup、css_set、cgroup_subsys_state、cg_cgroup_link等。子系统负责控制不同进程的行为,例如CPU子系统可以控制一组进程在CPU上执行的时间占比。层级在内核中表示为cgroupfs_root,一个层级控制一批进程,层级内部绑定一个或多个子系统,每个进程只能在一个层级中存在,但一个进程可以被多个层级管理。cgroup以树形结构组织,每一棵树对应一个层级,层级内部可以关联一个或多个子系统。

       每个层级内部包含的节点代表一个cgroup,进程结构体内部包含一个css_set,用于找到控制该进程的所有cgroup,多个进程可以共用一个css_set。cgroup_subsys_state用于保存一系列子系统,数组中的每一个元素都是cgroup_subsys_state。cg_cgroup_link收集不同层级的cgroup和css_set,通过该结构可以找到与之关联的进程。

       了解了这些概念后,可以进一步探索cgroup内部用于结构转换的函数,如task_subsys_state、find_existing_css_set等,这些函数帮助理解cgroup的内部运作。此外,cgroup_init_early和cgroup_init函数是初始化cgroup的关键步骤,它们负责初始化rootnode和子系统的数组,为cgroup的使用做准备。

       最后,需要明确Linux内一切皆文件,cgroup基于VFS实现。内核启动时进行初始化,以确保系统能够正确管理进程资源。cgroup的初始化过程分为早期初始化和常规初始化,其中早期初始化用于准备cpuset和CPU子系统,确保它们在系统运行时能够正常工作。通过这些步骤,我们可以深入理解cgroup如何在Linux内核中实现资源管理和进程控制。

Linux性能监控之CPU平均负载、使用率监控、进程监控

       Linux系统性能监控是管理员日常维护的重要一环,其中CPU平均负载、使用率以及进程监控是关键部分。平均负载,即活跃进程数,反映系统繁忙程度,与CPU使用率并非直接相关,它涵盖了等待CPU和I/O的进程。通过命令`uptime`可以快速获取系统运行状态,如负载情况,这对于应急响应和问题定位很有帮助。

       检测CPU使用率,可以借助`stress`和`sysstat`包,其中`mpstat`用于实时监控每个CPU核心的负载、I/O等待等信息,而`pidstat`则针对进程资源占用进行详细监控。例如,通过`top`命令查看进程CPU和内存占用,还可以通过`mpstat -P ALL 5 2`每5秒生成两次报告,以追踪系统实时状态。

       若需进行压力测试以排查性能问题,`stress`工具提供了一种模拟场景的方式。总的来说,对这些指标的了解和监控,有助于优化系统性能和资源分配,确保系统的稳定运行。

linux下如何监听进程

       ä¸€ã€supervise

       Supervise是daemontools的一个工具,可以用来监控管理unix下的应用程序运行情况,在应用程序出现异常时,supervise可以重新启动指定程序。

       ä½¿ç”¨ï¼š

       mkdir test

       cd test

       vim run 写入希望执行的操作

       supervise test (注意这里是的参数是run文件上层的文件夹,改变run的为可执行 chmod +x run)

       äºŒã€monit

        monit是一个小型的开放源码工具来管理和监控Unix系统。Monit可以自动维护进程,及时避免进程异常退出等产生的问题。

       ç³»ç»Ÿï¼š monit可以监控问题的发生,包括进程状态、系统cpu负载、内存占用情况等,例如当apache服务的cpu负载以及内存闸弄情况过高时候,它会重启apache服务。

       è¿›ç¨‹ï¼š monit可以监控守护进程,包括系统进程。例如当某个进行down掉,它会自动恢复重启该进程。

       æ–‡ä»¶ç³»ç»Ÿï¼šMonit可以监控本地文件、目录、文件系统的变化,包括时间戳、校验值、大小的变化。例如,可以监控文件sha1以及md5的值,来监控文件是否发生变化。

       ç½‘络:monit可以监控网络连接,支持TCP、UDP、Unix domain sockets以及HTTP、SMTP等。

       å®šæ—¶è„šæœ¬ï¼šmonit可以用来定时测试程序和脚本,获取程序输出结果,进而判断是否成功或其他情况。

       å®‰è£…:

       sudo apt-get install monit

       ç¼–辑配置:

       sudo vim /etc/monit/monitrc

       å¯åŠ¨ã€åœæ­¢ã€é‡å¯ï¼š

       sudo /etc/init.d/monit start

       sudo /etc/init.d/monit stop

       sudo /etc/init.d/monit restart

       è®¾ç½®é¡µé¢ç›‘控状态:

       set mand=python /root/test_supervisor.py

       process_name=%(program_name)s

       stdout_logfile=/root/test.log

       stderr_logfile=/root/test.log

       ä¿å­˜ï¼Œå¯åŠ¨ï¼š

       /usr/bin/supervisord -c /etc/supervisord.conf

Linux中进程管理工具htop的安装与其命令使用教程

       1. htop简介

       Htop是一款运行于Linux系统监控与进程管理软件,用于取代Unix下传统的top。与top只提供最消耗资源的进程列表不同,htop提供所有进程的列表,并且使用彩色标识出处理器、swap和内存状态。

       用户一般可以在top无法提供详尽系统信息的情况下选择安装并使用htop。比如,在查找应用程序的内存泄漏问题时。与top相比,htop提供更方便、光标控制的界面来杀死进程。

       htop用C语言编写,采用了ncurses库。htop的名称源于其作者的名字。

2. htop安装

       代码如下:

yum -y install ncurses-devel #htop依赖ncurses

       wget /project/htop/htop/1.0.2/htop-1.0.2.tar.gz

       tar xzf htop-1.0.2.tar.gz

       cd htop-1.0.2

       ./configure

       make make install

3. htop用法

       安装完成后,命令行中直接敲击htop命令,即可进入htop的界面

       各项从上至下分别说明如下:

       左边部分从上至下,分别为,cpu、内存、交换分区的使用情况,右边部分为:Tasks为进程总数,当前运行的进程数、Load average为系统1分钟,5分钟,分钟的平均负载情况、Uptime为系统运行的时间。

       PID:进行的标识号

       USER:运行此进程的用户

       PRI:进程的优先级

       NI:进程的优先级别值,默认的为0,可以进行调整

       VIRT:进程占用的虚拟内存值

       RES:进程占用的物理内存值

       SHR:进程占用的共享内存值

       S:进程的运行状况,R表示正在运行、S表示休眠,等待唤醒、Z表示僵死状态

       %CPU:该进程占用的CPU使用率

       %MEM:该进程占用的物理内存和总内存的百分比

       TIME+:该进程启动后占用的总的CPU时间

       COMMAND:进程启动的启动命令名称

       下面是 F1~F 的功能和对应的字母快捷键。

Shortcut KeyFunction KeyDescription中文说明h, ? F1 Invoke htop Help 查看htop使用说明 S F2 Htop Setup Menu htop 设定 / F3 Search for a Process 搜索进程 \ F4 Incremental process filtering 增量进程过滤器 t F5 Tree View 显示树形结构 , F6 Sort by a column 选择排序方式 [ F7 Nice - (change priority) 可减少nice值,这样就可以提高对应进程的优先级 ] F8 Nice + (change priority) 可增加nice值,这样就可以降低对应进程的优先级 k F9 Kill a Process 可对进程传递信号 q F Quit htop 结束htop

       命令行选项(COMMAND-LINE OPTIONS)

-C --no-color 使用一个单色的配色方案 -d --delay=DELAY 设置延迟更新时间,单位秒 -h --help 显示htop 命令帮助信息 -u --user=USERNAME 只显示一个给定的用户的过程 -p --pid=PID,PID 只显示给定的PIDs -s --sort-key COLUMN 依此列来排序 -v version 显示版本信息

       交互式命令(INTERACTIVE COMMANDS)

上下键或PgUP, PgDn 选定想要的进程,左右键或Home, End 移动字段,当然也可以直接用鼠标选定进程 Space 标记/取消标记一个进程。命令可以作用于多个进程,例如 kill,将应用于所有已标记的进程 U 取消标记所有进程 s 选择某一进程,按s:用strace追踪进程的系统调用 l 显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件 I 倒转排序顺序,如果排序是正序的,则反转成倒序的,反之亦然 +, - 在树形模式下,展开或折叠子树 a (在有多处理器的机器上) 设置 CPU affinity: 标记一个进程允许使用哪些CPU u 显示特定用户进程 M 按Memory使用排序 P 按CPU使用排序 T 按Time+使用排序 F 跟踪进程: 如果排序顺序引起选定的进程在列表上到处移动,让选定条跟随该进程。这对监视一个进程非常有用:通过这种方式,你可以让一个进程在屏幕上一直可见。使用方向键会停止该功能 K 显示/隐藏内核线程 H 显示/隐藏用户线程 Ctrl-L 刷新 Numbers PID 查找: 输入PID,光标将移动到相应的进程上

4. 替代top

       用htop替换top,可添加别名,编辑/root/.bashrc文件,添加如下代码

       代码如下:

alias top=htop

linux守护进程管理神器-supervisor

       supervisor是一款由Python开发的进程管理工具,其核心功能在于通过服务端supervisord管理子进程,提供启动、关闭、重启和查看进程状态的能力。

       这款工具的独特之处在于能够通过Web界面直观地监控并控制进程状态,用户可以在Web页面上轻松地启动或停止服务。为了更直观地理解supervisor的作用,下图展示了如何通过它对服务器上的一些agent进行管理,以及对一些web服务进程进行监控,同时查看了简单的启动日志。

       安装方面,由于supervisor是用Python编写的,因此使用pip工具安装最为便捷。对于CentOS系统,用户也可以选择通过yum来安装,但推荐使用pip以获取最新的版本和最佳兼容性。

       对于希望确保服务在服务器异常宕机后能够快速恢复的用户,开启开机启动功能尤为重要。虽然通过pip或yum安装能够实现基础的安装流程,但为了实现开机启动,还需要进行额外的配置步骤。

       配置过程包括服务端配置和子进程配置文件的创建与调整。服务端配置文件通常包含了一些默认设置,例如,web服务默认状态为关闭。用户可以根据实际需求,如内网服务的使用场景,决定是否开启web服务。子进程配置文件则在目录/etc/supervisord.d/*.ini中存放,这部分配置文件尤为关键,直接决定了子进程的行为和属性。

       以node_exporter为例,其配置文件可以展示如何添加环境变量以及调整特定参数。用户还可以根据需要访问supervisord.org网站,查阅更多详细配置选项和最佳实践。

       在实际使用中,掌握命令操作是高效管理进程的关键。用户可以通过执行`--help`命令了解特定命令的帮助文档,从而快速获取所需信息。对于日常操作而言,`supervisorctl`命令是执行进程控制操作的常用工具。

       为了简化管理流程,用户可以将`supervisorctl`命令直接输入终端,进入交互式控制界面,从而直接执行各种管理命令,如启动、停止、重启进程,或查看进程状态等。

本文地址:http://5o.net.cn/html/25b47699498.html 欢迎转发