Articles of 进程

如何查找或计算Linux进程的页表大小和其他内核记帐?

我怎样才能找出Linux进程的页表有多大,以及其他任何可变大小的进程记帐?

识别在Linux上打开特定进程的文件

我需要一个脚本来识别在linux上打开特定进程的文件 识别fd: >cd /proc/<PID>/fd; ls |wc –l 我期望看到一个数字列表,这是在这个过程中使用的文件描述符的编号列表。 请告诉我如何查看在这个过程中使用的所有文件。 谢谢。

限制每个进程的物理内存

我正在写一个algorithm来执行一些外部存储器的计算,即你的input数据不适合主内存的地方,你必须考虑I / O的复杂性。 因为对于我的testing,我并不总是希望使用真正的input,我想限制可用于我的进程的内存量。 我发现的是,我可以设置mem内核参数来限制所有进程的物理内存(是正确的?) 有没有办法做到这一点,但每个进程的限制 。 我看到ulimit ,但它只限制每个进程的虚拟内存。 任何想法(也许我甚至可以从我的C ++代码编程)?

进程永久停留在D状态

我在Ubuntu 10.04.3 LTS上遇到一些进程停滞在D状态的问题。 他们自11月5日以来一直处于这种状态(今天是12月6日)。 我知道这些是不间断睡眠状态,通常与从硬件(如硬盘)等硬件数据相关。 这是一个生产服务器,所以重新启动是最后的手段,任何人都能够清楚这些进程可能是什么? 这是来自ps -aux的D状态项目的输出 www-data 22851 0.0 0.0 0 0 ? D Nov05 0:00 [2637.64] www-data 26306 0.0 0.0 4008 12 ? D Nov05 0:00 ./2.6.37 www-data 26373 0.0 0.0 4008 12 ? D Nov05 0:00 ./n2 www-data 26378 0.0 0.0 4008 12 ? D Nov05 0:00 ./n2 这是ps axl | […]

如何在多核上运行使用bash进行pipe理的进程?

我有一个简单的bash脚本,pipe道输出到另一个进程。 即:。 dostuff | filterstuff 碰巧在我的Linux系统(openSUSE,如果它很重要的话,kernel 2.6.27),这两个进程都运行在一个内核上。 但是,在不同内核上运行不同的进程是一种默认策略,在这种情况下不会触发。 系统的哪个部分负责,我该怎么做来利用多核function? 请注意 ,在2.6.30内核上没有这样的问题。 澄清 :遵循丹尼斯·威廉姆森的build议,我确定了顶级程序,pipe道进程确实总是运行在同一处理器上。 Linux调度程序,通常做得非常好,这次不行。 我认为,在bash中的东西可以防止操作系统做到这一点。 问题是我需要一个适用于多核和单核机器的便携式解决scheme。 Dennis Williamson提出的taskset 解决scheme不适用于单核机器。 目前我正在使用:, dostuff | taskset -c 0 filterstuff 但这似乎是一个肮脏的黑客。 谁能提供更好的解决scheme?

用于Linux进程pipe理的Python库

通过我的Web界面,我想启动/停止某些进程,并确定启动的进程是否仍在运行。 我现有的网站是基于Python的,运行在Linux服务器上,所以你知道一个合适的库支持这个function吗? 谢谢

为什么在父进程在Linux中被杀后为什么subprocess还活着?

有人告诉我,当你在linux中杀死父进程时,孩子会死。 但我怀疑它。 所以我写了两个bash脚本,其中father.sh将调用child.sh 这是我的脚本: 现在我运行bash father.sh ,你可以检查它ps -alf 然后我通过kill -9 24588 ,我猜想应该终止subprocess,但不幸的是我错了。 谁能解释为什么? 谢谢

单进程x64 Linux中最大可能的内存

在x64 Linux中是否有单个进程的内存限制? 我们正在运行一个带有32G内存的Linux服务器,而且我想知道是否我可以将大部分内存分配给一个需要大量内存的单个进程。

perl fork()exec(),subprocess狂放

我正在使用Linux和.sh是在tcsh 。 我做了一个非常基本的fork和exec ,但是我需要帮助来实现安全。 基本上我的Perl脚本在subprocess中调用.sh脚本。 但是当我Ctrl+c杀死父母时,信号被孩子忽略。 1)如何捕获subprocess的SIGINT ? 2)运行.sh脚本的subprocess仍然是标准输出到xterm的屏幕。 我怎样才能删除这个? 我正在考虑在后台运行脚本 exec("shell.sh args &"); 但还没有testing,因为我需要弄清楚如何防止孩子先疯狂。 3)父进程(perl脚本)不等待subprocess(.sh脚本)。 所以我读了很多关于孩子成为僵尸 ? 脚本完成后会发生吗? 我将如何阻止它? $pid = fork(); if($pid < 0){ print "Failed to fork process… Exiting"; exit(-1); } elsif ($pid ==0) { #child process exec("shell.sh args"); exit(1); } else { #execute rest of parent}

什么是可能导致fork()或system()调用在Linux上失败的一些条件?

怎么能找出它们是否发生,并导致由fork()或system()返回的错误? 换句话说,如果fork()或system()返回一个错误,我可以检查一下Linux中有哪些东西来诊断为什么会发生这个特定的错误? 例如: 只是内存不足(导致errno ENOMEM) – 检查内存使用“免费”等 内核没有足够的内存来复制父进程的页表和其他会计信息(导致errno EAGAIN) 是否有全球stream程限制? (导致errno EAGAIN呢?) 是否有每个用户的进程限制? 我怎么知道它是什么? …?