Articles of 进程

当一个进程被杀害,这个信息logging在任何地方?

题: 当一个进程被杀死的时候,这个信息被logging在任何地方(比如在内核中),比如syslog(或者可以被configuration成被logging的syslog.conf) 是凶手的PID信息,死亡的时间和date以及原因 更新 –你们都给了我一些见解,非常感谢

进程的虚拟地址范围

简而言之:进程的虚拟地址空间是否连续? 我需要知道内核分配给进程的虚拟地址。 如果我错了,请继续纠正我。 在进程创build时,内核为进程分配虚拟内存,并将进程不同段的虚拟地址的开始和结束存储在task_struct中的mm_struct中。 现在说一个进程已经用完了,需要增加堆大小。 如果虚拟地址范围是连续的,那么从本范围之外为该过程分配的堆的新分配的块是否是? 或者是以新块与原块相邻的方式进行分配。 如果没有空间的话(因为内存映射部分在那里)。 它如何跟踪? 如果虚拟地址范围不是连续的,那么vm_struct如何跟踪堆(或任何其他分段)的地址范围的不同块? 你能清楚我的概念吗?

检查进程是否正在运行

我正在尝试检查一个进程是否正在运行。 如果它正在运行,我想要返回值“OK”,如果不是返回值“不好”。 我只能使用'ps'而没有附加任何其他参数(例如ps -ef),如果这是正确的术语。 我有的代码是: if ps | grep file; then echo 'OK'; else echo 'NO'; fi 这个问题是,它不会search确切的过程,总是返回“确定”,我不希望所有的信息出现,我只是想知道文件是否存在。

在64位操作系统上开发是否有优势?

我不确定我是否理解正确:在同一个系统上,64位操作系统比32位操作系统更快地运行/编译代码? 我在使用64位操作系统,似乎只会导致遗留和专有软件的兼容性问题。 (我们正在运行Ubuntu 9.04 Jaunty amd64)

为什么SIGINT在这里被抓到?

这里发生了什么? 我以为SIGINT将被发送到前台进程组。 (我想,也许,系统()正在运行一个为subprocess创build一个新的进程组的shell?任何人都可以证实这一点?) % perl local $SIG{INT} = sub { print "caught signal\n"; }; system('sleep', '10'); 然后按ctrl + d然后按ctrl + c立即注意到,“抓到的信号”从不打印。 我觉得这是一个简单的事情…无论如何解决这个问题? 问题是,当通过系统运行一堆命令结果持有ctrl + c,直到所有的迭代完成(因为perl永远不会得到SIGINT),是相当烦人的… 这怎么能解决? (我已经使用fork()直接testing了解这个工作…这不是一个可以接受的解决scheme) 更新 :请注意,这与“睡眠” 无关 ,只是命令需要一些任意长的时间来运行,这远远超过了它周围的perl。 如此多的按下ctrl + c获取发送到命令(如在前台进程组?),并以某种方式设法永远不会被发送到Perl。

Linux内存使用历史

我遇到了一个问题,在这个问题中,我的服务器开始出现一些正常的进程失败,并检查,因为服务器的内存已经完全占满了。 我查看了日志logging,发现它杀死了一些Java进程。 我使用“top”命令来查看哪些进程正在占用最多的内存(在问题解决之后),这是一个Java进程。 所以实质上,我可以告诉哪些进程正在占用最多的内存。 我想知道的是,如果有什么方法可以查看哪些进程在发生故障时占用了最多的内存呢? 也许Linux会在特定时间跟踪或logging内存使用情况? 我真的不知道,但如果我能看到这样的细节,那将是非常棒的。

过程退出状态3是什么意思?

我已经看到在重启进程的几个python脚本中使用退出状态3 。 据我所知在Unix / Linux上约定只有0和“不是0 ”。 是否有一个定义其他值如3的约定。

在linux(Python)中使用它的名字杀死进程

这工作,但它杀死每个Python进程。 pkill python 但是,我不能这样做: pkill myscript.py 我也试过killall ,但也没有运气。 我必须使用正则expression式吗? 顺便说一句,我想在一个python脚本与import操作系统。

如何找出进程何时退出Linux?

我找不到一个很好的方法来找出一个进程何时退出Linux。 有没有人有解决scheme? 我能想到的是定期检查进程列表,但这不是即时且相当昂贵的(每次都必须遍历所有进程)。 在Linux上有这样的接口吗? 有点像waitpid ,除了可以从不相关的进程中使用的东西吗? 谢谢,Boda Cydo

堆栈旁边有什么线程

在Linux进程中,每个线程都有自己的堆栈。 除此之外,每个线程还有什么本地的。 我已经阅读了诸如文件分配表等等的东西……有人可以给我提供一个线程特有的东西以及它们如何排列在内存中的列表。 其次,我注意到,当我分配一个堆栈到一个线程(见下面的代码)时,线程函数中的第一个variables的地址在我分配的堆栈地址( stackAddr )之后不知何故是相当多的字节。 我认为这是因为堆栈的顶端是分配的堆栈内存的结束地址,因为本地variables和分配堆栈的地址的差值大约是堆栈的大小( STACKSIZE )。 换句话说,它看起来像从底部向顶部增长。 pthread_attr_init( &attr[tid] ); stackAddr = malloc(STACKSIZE); pthread_attr_setstack( &attr, stackAddr, STACKSIZE );