文章编号:11834时间:2024-10-01人气:
进程标识符 (PID) 是 Linux 系统中识别进程进程(启动、停止、暂停)
Ftrace系统调试工具的探索之旅:深入理解与实践终极指南
Ftrace,自内核2.6.27起就成为了一把性能分析的利器,它通过函数调用流程追踪,为内核开发和优化提供了强大的支持。 它的工作原理巧妙地结合了静态插桩(通过bl和mcount指令)与动态插桩(替换nop指令),让开发者能够根据需求灵活调整。
要启动Ftrace,你需要配置一些关键选项,比如CONFIG_FUNCTION_TRACER和CONFIG_HAVE_FUNCTION_GRAPH_TRACER,以激活其功能。 操作时,需挂载debugfs文件系统,这里的选择决定了你的追踪目标,无论是对函数的直接追踪,还是图形化的展示,都可根据你的项目需求定制。
在/sys/kernel/debug目录的tracing子目录中,隐藏着Ftrace的神器们:
例如,3.3.11的set_ftrace_pid允许你追踪特定PID的进程,连同其子进程和退出过程,而3.3.12的set_graph_function则专注于文件中预设的函数调用链。 4.0章节深入展示了更高级的用法,如追踪命令执行、函数调用流程的详细记录等。
若想在ko文件中记录信息,别忘了在编译时添加-pg参数。 此外,自动化脚本common_是Ftrace的得力助手,它能自动追踪模块调用、函数调用链、命令执行流程,大大提高调试效率。 使用前务必先停止追踪,通过common_ clear命令进行初始化。
总结来说,Ftrace是一个强大而灵活的工具,从基础配置到高级用法,从脚本操作到深入原理,本文旨在为你提供一份详尽的实战指南,助力你在内核调试的世界里游刃有余。
Linux查看进程和终止进程的技巧1. 在LINUX命令平台输入1-2个字符后按Tab键会自动补全后面的部分(前提是要有这个东西,例如在装了tomcat的前提下,输入tomcat的to按tab)。 2. ps 命令用于查看当前正在运行的进程。 grep 是搜索例如: ps -ef | grep java表示查看所有进程里CMD是java的进程信息ps -aux | grep java-aux 显示所有状态ps3. kill 命令用于终止进程例如: kill -9 [PID]-9表示强迫进程立即停止通常用ps 查看进程PID ,用kill命令终止进程网上关于这两块的内容-----------------------------------------------------------------------------------PS-----------------------------------------------------------------------------------1. ps简介ps命令就是最根本相应情况下也是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行和运行地状态、进程是否结束、进程有没有僵死、哪些进程占用了过多地资源等等.总之大部分信息均为可以通过执行该命令得到地.2. ps命令及其参数ps命令最经常使用地还是用于监控后台进程地工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信地,所以如果需要检测其情况,便可以运用ps命令了.该命令语法格式如下:ps [选项]-e 显示所有进程,环境变量-f 全格式-h 不显示标题-l 长格式-w 宽输出a 显示终端上地所有进程,包括其他用户地进程r 只显示正在运行地进程x 显示没有控制终端地进程O[+|-] k1 [,[+|-] k2 [,…]] 根据SHORT KEYS、k1、k2中快捷键指定地多级排序顺序显示进程列表.对于ps地不同格式都存在着默认地顺序指定.这些默认顺序可以被用户地指定所覆盖.在这里面“+”字符是可选地,“-”字符是倒转指定键地方向只列出进程标识符,之间运用逗号分隔.该进程列表必须在命令行参数地最后一个选项后面紧接着给出,中间不能插入空格.比如:ps -f1,4,5.以下介绍长命令行选项,这些选项都运用“--”开头:--sort X[+|-] key [,[+|-] key [,…]] 从SORT KEYS段中选一个多字母键.“+”字符是可选地,因为默认地方向就是按数字升序或者词典顺序.比如: ps -jax -sort=uid,-ppid,+pid.--help 显示帮助信息.--version 显示该命令地版本信息.在前面地选项说明中提到了排序键,接下来对排序键作进一步说明.需要注意地是排序中运用地值是ps运用地内部值,并非仅用于某些输出格式地伪值.排序键列表见表4-3.表4-3 排序键列表ccmd可执行地简单名称Ccmdline完整命令行fflags长模式标志gpgrp进程地组IDGtpgid控制tty进程组IDjcutime累计用户时间Jcstime累计系统时间kutime用户时间Kstime系统时间mmin_flt次要页错误地数量Mmaj_flt重点页错误地数量ncmin_flt累计次要页错误Ncmaj_flt累计重点页错误osession对话IDppid进程IDPppid父进程IDrrss驻留大小Rresident驻留页ssize内存大小(千字节)Sshare共享页地数量tttytty次要设备号Tstart_time进程启动地时间UuidUIDuuser用户名vvsize总地虚拟内存数量(字节)ypriority内核调度优先级3. 经常使用ps命令参数最经常使用地三个参数是u、a、x,下面将通过例子来说明其具体用法.[例20] 以root身份登录系统,查看当前进程状况$ psPID TTY TIME COMMAND5800 ttyp0 00:00:00 bash5835 ttyp0 00:00:00 ps可以看到,显示地项目共分为四项,依次为PID(进程ID)、TTY(终端名称)、TIME(进程执行时间)、COMMAND(该进程地命令行输入).可以运用u选项来查看进程所有者及其他少许详细信息,如下所示:$ ps uUSER PID %CPU %MEM USZ RSS TTY STAT START TIME COMMANDtest 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 -bashtest 5836 0.0 0.3 2528 856 ttyp0 R Nov27 0:00 ps u在bash进程前面有条横线,意味着该进程便是用户地登录shell,所以对于一个登录用户来说带短横线地进程只有一个.还可以看到%CPU、%MEM两个选项,前者指该进程占用地CPU时间和总时间地百分比;后者指该进程占用地内存和总内存地百分比.在这种情况下看到了所有控制终端地进程;当然对于其他那些没有控制终端地进程还是没有观察到,所以这时就需要运用x选项.运用x选项可以观察到所有地进程情况.-----------------------------------------------------------------------------------KILL-----------------------------------------------------------------------------------由于职责的要求,你不得不费力地阅读那些令你感到费解的晦涩的Linux应用程序的说明文件。 然后,你将运行指令和编辑设置文件。 一切都在正常 运行,生活真美好。 但是,你知道,好时光不会永远持续下去。 当你遇到令人恐惧的“send the process a SIGHUP”提示时,好时光结束了。 什么是“SIGHUP(启动信号)”,你如何发送它?它像是你送给你的恋人的一束花吗?虽然你可以肯定这不是一个命令行指令,不过,你还是试着 键入它。 当然,这没有结果。 然后,你检查一下键盘。 哦,没有SIGHUP键。 于是你又重新阅读这个应用程序的参考指南,看到下面这段文字:当收到一个hangup(进程结束)信号时,sshd程序会重新阅读配置文件。 通过执行启动程序时的命令及选项来发送SIGHUP信号,如:/usr/sbin/sshd。 哦,原来是这样。 程序员 VS 使用者LINUX程序的在线参考指南作者一般都要既照顾到最终用户的需求也要照顾到高级程序员的需求。 因此,有些说明比较难懂。 不过,不要担心。 现在我们就要揭开覆盖在这些让人迷惑的内容上面那神秘的面纱。 信号与进程控制这个问题主要属于信号和进程控制的范畴。 对于我们系统管理员和普通用户来说,我们主要关心的是启动、停止和重新启动服务、停止失控的进程和被挂起的进程,并且尽可能不中断系统运行。 因为不同的操作系统和不同的命令外壳处理信号的方式都不相同,我们这里只介绍Linux操作系统和bash外壳。 信号是用来与守护程序和进程通信的。 任何活动任务都是一个进程,而守护程序是等待对某些事件做出反应或者按照日程安排执行任务的后台服务。 一个 程序必须有建在其中的信号处理程序用于捕获和应答信号。 在LINUX中的signal 参考指南解释了各种不同信号和这些信号的用途。 信号是由“kill”命令发出的。 kill -l命令可以显示一个可用信号列表及其编号。 所有的守护程序和进程都有一个进程ID(PID),例如使用ps命名所显示的内容:$ ps auxUSER PID %CPU %MEM TTY STAT COMMANDroot 1 0.0 0.1 ? S init [2]105 7783 0.0 0.2 ? Ss /usr/bin/dbus-daemon --systemhal 7796 0.0 0.7 ? Ss /usr/sbin/haldpostfix 7957 0.0 0.2 ? S qmgr -l -t fifo -u -cnagios 8371 0.0 0.2 ? SNs /usr/sbin/nagios /etc/nagios/这个输出是经过简化的。 你在系统中可以看到更多的行和栏目。 如果某些进程消耗了你的全部CPU或者内存,你可以在这个输出的%CPU和%MEM 列中发现它们。 找到失控的进程的一种更快捷的方法是使用TOP命令,因为按照默认的设置,使用占用CPU资源最多的进程在最上面显示。 我们可以使用一条 “yes”命令来测试一下:$ yes carla is teh awesum这个命令将以很高的速度反复显示“carla is teh awesum”,直到你停止它运行。 这将使你的CPU使用率达到警戒线。 $ USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND carla 25 0 17m 13m R 93.4 3.5 0:50.26 konsole carla 15 0 2860 468 400 S 4.3 0.1 0:00.97 yes分析一下这个结果,你会发现一些有趣的事,你会发现,占用CPU最多的程序是konsole虚拟终端程序,而不是“yes”命令,这是因为 “yes”命令是在konsole终端程序中运行的。 如果在一个“真正的”控制台(按Ctrl+alt+f2键)中运行同样的命令序列,你将看到 “yes”命令被排在第一位。 有许多停止“yes”命令运行的方式。 如果你要回到运行它的shell中,按CTRL+c键就可以了。 或者你可以在另一个shell中用“kill”命令停止“yes”命令的运行,Kill命令后面跟PID或者命令名称,如下如示:$ kill 或者$ killall yes按CTRL+c键发出一个SIGINT(信号2),这个信号是键盘要求取得控制权的中断信号。 kill和killall这两个命令按照默认的设 置都发出一个SIGTERM信号(编号15)。 程序中可以设置对SIGTERM信号(15)是捕捉或者忽略,或者以不同的方式解释。 因此,如果你的程序对 于 KILL命令的反应与你预期不同,很可能是被KILL的目标程序的问题。 终止一个父进程通常也终止了它的子进程。 不过,情况并不总是如此。 你知道子进程是什么吗?使用ps命令加上-f选项就可以看到,如下所示:$ ps axf ? R 2:35 _ konsole [kdeinit] pts/3 Ss 0:00 | _ /bin/bash pts/3 S+ 0:00 | | _ yes carla is teh awesum pts/4 Rs 0:00 | _ /bin/bash pts/4 R+ 0:00 | | _ ps axf现在,回到SIGHUP的话题SIGHUP的发音是“sig-hup”,是signal hangup的缩写,含义是“中止信号”。 你如何发送一个SIGHUP信号呢?这里有几种方式:# kill -HUP [pid]# killall -HUP [process-name]# kill -1 [pid]# killall -1 [process-name]因此,你可以使用PID或者名称,信号名称或者号码。 那么为什么要这样做而不使用/etc/init.d/foo命令重新启动呢?使用它们自己 的 init(初始化)文件来控制服务是优先选择的方式,因为这些文件通常包含健全和错误检查以及额外的功能。 使用“kill”命令和信号的主要原因是尽可能 明确地终止挂起和失控的进程,而不必重新启动或者登出。 终止进程正如你在关于信号的man page中所看到的,有十几种控制进程的方法。 下面是一些常用的方法:kill -STOP [pid]发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。 kill -CONT [pid]发送SIGCONT (19,18,25)重新开始一个停止的进程。 kill -KILL [pid]发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。 kill -9 -1终止你拥有的全部进程。 SIGKILL和SIGSTOP信号不能被捕捉、封锁或者忽略,但是,其它的信号可以。 所以这是你的终极武器。 Bash shell的Kil命令lBash外壳包含一个内置的kill命令,当执行下面命令:$ type -all killkill is a shell built-inkill is /bin/kill命令的结果表明有两个kill命令,一个是BASH的内置命令,另一个是/bin/kill可执行程序。 一般来说这两个命令不太可能遇到冲突的情况,不过,如果你确实遇到了kill命令行为异常时,你可以明确的指定/bin/kill命令。 你一定要进一步查阅下面的资源中列出的参考资源来了解Linux中kill的妙用,因为这是你进入维护Linux系统领域的门票。 这些知识能够让你像做外科手术一样对系统进行维护,而不用在遇到问题时每一次都重新启动系统,就像我们知道的某些蹩脚的操作系统那样。 资源Linux Cookbook一书的第七章“开始和终止Linux”bash (1) - GNU Bourne-Again Shellyes (1) - 在被终止前反复打印字符signal (7) - 可用信号列表ps (1) - 报告当前进程的快照kill (1) - 向一个进程发出信号killall (1) - 按名字消灭进程pkill (1) - 根据名字和其它属性查看或者发出进程信号skill (1) - 发送一个信号或者报告进程状态xkill (1) - 按照X资源消灭一个客户程序
内容声明:
1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违法信息,如您发现违法内容,请联系我们进行举报处理!
4、本文地址:http://www.jujiwang.com/article/aa3530980dbd29f6b132.html,复制请保留版权链接!
生活是一场精彩的旅程,值得我们细细品味和记录,QQ空间,作为亿万用户分享生活瞬间的平台,已经成为我们珍贵的回忆宝库,在这里,我们用文字、照片、视频等方式记录着生活的点点滴滴,留住生命中那些让人难忘的时刻,QQ空间不仅仅是一个记录生活的工具,更是一本属于你的个人日记,见证着你的成长、蜕变和喜怒哀乐,通过QQ空间,你可以,记录你的日常生活...。
技术教程 2024-09-30 18:21:19
body,font,family,Arial,Helvetica,sans,serif,h1,margin,bottom,15px,.container,width,80%,margin,0auto,.section,margin,bottom,30px,.sub,section,margin,bottom,15px,.co...。
技术教程 2024-09-30 01:53:38
前言阶乘是一种数学运算,它表示连续自然数的乘积,1000的阶乘,表示为1000,,是一个非常大的数,以至于它在科学和工程等领域有着广泛的应用,在本文中,我们将深入探讨1000的阶乘,从其基本概念到计算方法,概念阶乘运算本质上是一种累积乘法,对于正整数n,n的阶乘定义如下,```n,=n×,n,1,×,n,2,×...×2×1```特别...。
互联网资讯 2024-09-28 23:57:02
Python拥有丰富的软件包生态系统,它可以极大地简化你的开发任务,而Pip是管理这些软件包的最流行工具,本指南将提供有关Pip的全面介绍,包括其安装、使用和故障排除,安装Pip在大多数系统上,Pip已作为Python安装的一部分预先安装,你可以使用以下命令检查其版本,python,mpip,version如果没有安装Pip,可以通...。
互联网资讯 2024-09-27 10:36:06
简介本教程将指导您使用Flex和Java从头开始构建移动应用程序,我们使用的工具是AdobeFlexBuilder,它是一个用于构建跨平台移动应用程序的集成开发环境,IDE,先决条件安装FlexBuilder安装Java开发工具包,JDK,安装AndroidSDK创建新项目在FlexBuilder中,单击,文件,>,新建,&g...。
最新资讯 2024-09-25 23:04:43
前言Zephyr是一个为资源受限的物联网设备设计的实时操作系统,RTOS,它具有低内存占用、低功耗和高性能的特点,本指南将指导初学者逐步设置Zephyr开发环境,并创建一个简单的,HelloWorld,项目,系统要求Linux、macOS或Windows操作系统文本编辑器或IDE,如VisualStudioCode或EclipseG...。
互联网资讯 2024-09-25 18:31:38
简介欢迎来到我们的在线学习平台,在这里您可以获得全面的教程和文档,帮助您成为一名更出色的开发人员,无论您是经验丰富的专业人士还是刚起步的新手,我们都有适合您学习需求的资源,教程我们的教程涵盖了广泛的开发主题,包括,编程语言,如Python、Java、C,Web开发框架,如Django、Spring、React,数据库管理系统,如M...。
最新资讯 2024-09-23 21:45:27
定义单选按钮,又称单选框,是一种用于在一组选项中只能选择一个选项的控件,它通常由一个圆圈或方框以及一个标签组成,标签表示选项的详细信息,特性互斥,同一组中的单选按钮互斥,这意味着一次只能选择一个选项,可见标签,单选按钮的标签清晰可见,以便用户能够轻松识别选项,单击激活,单选按钮通过单击激活,选中它将取消选中其他同组的单选按钮,表单提交...。
最新资讯 2024-09-14 17:47:00
body,font,family,Arial,Helvetica,sans,serif,font,size,14px,line,height,1.5em,h1,font,size,24px,margin,bottom,16px,h2,font,size,18px,margin,bottom,10px,ul,list,style,...。
最新资讯 2024-09-11 22:05:07
抽象方法是Java编程中创建灵活和可扩展代码的强大工具,它们允许您定义接口和抽象类,这些类可以由子类实现和扩展,从而实现多态性和代码重用,什么是抽象方法,抽象方法是一种没有任何实现的特殊方法,它只声明方法的签名,返回类型、名称和参数,,而不提供实际的实现,抽象方法必须由实现该接口或从该类继承的子类来实现,抽象方法用abstract关键...。
技术教程 2024-09-09 09:24:16
前言在人际交往中,负面情绪和冲突是不可避免的,如果处理不当,它们可能会升级,导致严重后果,因此,学会避免负面情绪和冲突升级至关重要,避免负面情绪的技巧1.识别触发因素找出哪些情况或行为会引发你的负面情绪,一旦你认识到这些触发因素,你就可以采取措施避免它们或提前做好准备,2.练习情绪调节学会管理你的情绪,当你感到愤怒、沮丧或焦虑时,找一...。
互联网资讯 2024-09-08 06:35:14
闹鬼传闻北京375路公交车是北京市一条著名的公交线路,运营于西直门至八宝山之间,多年来,关于这辆公交车的灵异传闻不绝于耳,曾引发广泛关注,据传闻称,曾经有人在375路公交车上亲眼目睹座位上出现奇怪的身影,车内还经常传出莫名的哭声,让人毛骨悚然,甚至还有传闻称,这辆公交车曾经发生过灵异事件,导致多人死亡,这些传闻在网络上流传甚广,使得3...。
互联网资讯 2024-09-05 01:35:02