首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哪里可以看到内核销毁进程的列表?

在哪里可以看到内核销毁进程的列表?
EN

Unix & Linux用户
提问于 2011-03-25 07:40:07
回答 3查看 65.1K关注 0票数 34

有什么方法可以检查内核杀死了哪些进程吗?有时,我登录到我的服务器,发现应该运行一整晚的东西只在8小时内停止运行,我不确定是应用程序在运行还是内核在运行。

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2011-03-25 08:11:44

如果内核杀死了一个进程(因为系统内存不足),就会有一条内核日志消息。签入/var/log/kern.log (在Debian/Ubuntu上,其他发行版可能将内核日志发送到不同的文件,但通常在Linux下的/var/log下)。

请注意,如果OOM杀手(内存不足的杀手)触发,这意味着您没有足够的虚拟内存。添加更多的交换(或可能更多的RAM)。

一些进程崩溃也记录在内核日志中(例如,分段错误)。

如果进程是从cron启动的,您应该有一封带有错误消息的邮件。如果进程是从终端中的shell启动的,请检查该终端中的错误。运行screen中的进程,以便在早上再次看到终端。如果OOM杀手触发,这可能没有帮助,因为它可能也会杀死cron或屏幕进程;但是如果您遇到了OOM杀手,这就是您需要解决的问题。

票数 30
EN

Unix & Linux用户

发布于 2011-03-25 08:23:23

流程会计在这方面可能会有所帮助。

简单地说:

代码语言:javascript
复制
apt-get install acct

然后尝试这样的命令:

代码语言:javascript
复制
lastcomm
sa

或者在Ubuntu上:

代码语言:javascript
复制
lastcomm -f /var/log/account/pacct
sa /var/log/account/pacct

请参见:

  • http://tldp.org/HOWTO/Process-Accounting/pasetup.html
  • http://tldp.org/HOWTO/Process-Accounting/misccommands.html

更新

奇怪的是,pacct文件包含关于退出状态的信息,但是lastcommsa似乎都没有打印它。

因此,据我所见,您必须编写自己的C程序才能访问这些信息。

更新2

这是一个打印退出代码的版本。

最后两个字段是"S“表示”信号“,"E”表示“退出”,后面是信号号或退出状态。

所以在你的例子中,你可能是在找"S 15“,意思是它有一个SIGTERM。

代码语言:javascript
复制
sleep                X mikel    stdin      0.00 secs Fri Mar 25 20:15 S  15

与“E0”相比,这意味着进程没有错误地退出。

代码语言:javascript
复制
true                   mikel    stdin      0.00 secs Fri Mar 25 20:16 E   0

只有最低限度的测试。

  • http://mikelward.com/software/lastcomm.exitcode.patch
  • http://mikelward.com/software/lastcomm
票数 13
EN

Unix & Linux用户

发布于 2011-03-25 12:01:16

sudo服务--状态--全部

此命令将告诉您哪些服务当前正在运行,哪些服务没有启动或停止。

票数 -1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/10077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档