Articles of 进程

如何检查JBoss是否在Unix服务器上运行?

我有一个脚本下面,我想回声“jboss不运行”或“jboss运行”取决于它是否可以在进程列表中findjboss进程。 但是,当我closuresJboss的时候,它仍然执行Else条件,并且说“jboss正在运行”。 如果我手动执行“pgrep -f jboss”,它不会返回任何东西,那么为什么它仍然会进入其他条件? 困惑 #!/bin/bash if [ -z "$(pgrep -f jboss)" ] then echo "jboss is not running" else echo "jboss is running" fi 谢谢你的帮助!

识别内核线程

我想知道如何区分我正在构build的进程扫描程序的用户线程的内核线程。 我很难find这两种types的好定义。 我发现内核线程没有自己的内存,所以/ proc / $ pid / status中没有Vm *值,并且/ proc / $ pid / exe中的统计信息不会返回任何内容。 所以,我想我可以识别内核线程,如果一个进程没有Vm *值和没有inode号码。 我想错了…我的脚本看到php-cgi进程有时被识别为内核进程。 如果发现那些错误识别出来的进程中的大部分是僵尸,那么一秒钟后就会死掉。 所以我执行了一个简单的检查,看看状态是否是“Z”。 如果是这样,请忽略它。 这为我节省了很多误报,但是我仍然收到有关php-cgi内核进程的消息。 任何人都可以告诉我如何以正确的方式区分内核线程和用户线程?

处于睡眠状态的CPU利用率较高

我有一个似乎陷入僵局的过程: # strace -p 5075 Process 5075 attached – interrupt to quit futex(0x419cf9d0, FUTEX_WAIT, 5095, NULL 它坐在“futex”系统调用,似乎是无限期地等待锁。 当“top”运行时,这个过程显示消耗了大量的CPU: # top -b -n 1 top – 23:13:18 up 113 days, 4:19, 1 user, load average: 1.69, 1.74, 1.72 Tasks: 269 total, 1 running, 268 sleeping, 0 stopped, 0 zombie Cpu(s): 8.1%us, 0.1%sy, 0.0%ni, 91.8%id, 0.0%wa, 0.0%hi, […]

无法在64位Linux上运行32位应用程序

我有一个非常小的Ubuntu 8.04 64位安装。 当我尝试运行一些32位程序时,例如我的jhead程序,我得到消息No such file or directory 。 我想这可能是一个图书馆的问题,但是当我这样做的时候: ldd jhead 而不是它需要的库列表,我只是得到消息not a dynamic application 。 对于我使用的另一个旧的32位应用程序也是如此。 所以会出现一些运行32位应用程序的非常重要的组件。 但是我怎么才能确定这些是什么?

在使用C ++的Linux中显示进程

我从C ++开始,阅读一本关于它的好书,我想要构build一个程序,使用C ++向用户显示他正在做的Linux的所有进程。

缓冲区溢出在64位

我正在试图用缓冲区溢出做一些有趣的实验。 我正在阅读这个论坛的主题,并试图写我自己的小代码。 所以我做的是一个小的“C”程序,它需要字符参数并运行,直到分段错误。 所以我提供的参数,直到我得到一个消息,我用41代替了返回地址。我的缓冲区字符长度,我复制我的inputstring是[5]。 这是我在gdb中做的。 run $(perl -e 'print "A"x32 ; ') Program received signal SIGSEGV, Segmentation fault. 0x0000000000400516 in main (argc=Cannot access memory at address 0x414141414141412d 然后我发现需要16个'A'来覆盖。 run $(perl -e 'print "A"x16 . "C"x8 . "B"x32 ; ') 0x0000000000400516 in main (argc=Cannot access memory at address 0x434343434343432f ) 这告诉我们8“C”正在覆盖返回地址。 根据在线教程,如果我提供了一个有效的地址,而不是8“C”。 我可以跳到某个地方并执行代码。 所以我在初始的16“A”之后超载了内存。 下一步是执行 run […]

量化内存,CPU在Linux下使用C进程

如何知道,在Linux中有多lessRAM和CPU“吃”了某些过程? 以及如何找出所有运行的进程(包括守护进程和系统进程)? =) UPD:使用C语言

从信号处理程序打印堆栈跟踪

我需要从在Linux上运行的64位multithreadingC ++应用程序的信号处理程序打印堆栈跟踪。 虽然我find了几个代码示例,但是没有一个编译。 我的阻塞点是从ucontext_t结构中获取调用者(生成信号的点)的地址。 我可以find的所有信息都指向EIP寄存器,如ucontext.gregs [REG_EIP]或ucontext.eip。 看起来他们都是x86特定的。 英特尔和AMD处理器都需要符合64位的代码。 任何人都可以帮忙吗?

如何find一个进程在C中运行?

我想知道一个进程是否正在运行。 我不想使用任何系统(“”)命令。 有没有任何基于C的function,让你知道如果一个进程正在运行? 我想提供进程名称,并想知道它是否正在运行。 谢谢,

来自task_struct的完整进程名称

我想从struct task_struct获得完整的进程名称。 comm字段只能存储16个字符,而进程名称可以更长。 有没有办法得到完整的进程名称? 这可以通过从task_struct获取struct vm_area_struct来完成,并进一步获取映射到vm_area的文件,但这是不可靠的。