我们有一个应用程序部署在一些不同的平台,Windows和Linux上。 它由三个java进程组成。
在Linux上,当我们想要进程ID杀死并重新启动其中一个时,我们执行:
ps -ef | grep java
结果是显示三个过程的三条线。
我们的一个客户使用Slackware,当我们做同样的命令的时候,结果是几行,每一行都有几十行。 更糟糕的是,其中许多线路只显示:
root 3470 0.0 3.1 1468048 64944 ? S 07:33 0:00 java
这是错误信息,因为我们无法确定这三个模块中的哪一个。
有什么关于slackware和ps命令?
更多信息:
Slackware版本:10.2.0
内核版本:
Linux version 2.4.32-abi (root@servidor) (gcc version 3.3.6) #3 Mon Sep 29 10:27:28 GMT 2008
最后,“男人ps”说:
STANDARDS This ps conforms to: 1 Version 2 of the Single Unix Specification 2 The Open Group Technical Standard Base Specifications, Issue 6 3 IEEE Std 1003.1, 2004 Edition 4 X/Open System Interfaces Extension [UP XSI] 5 ISO/IEC 9945:2003
非常感谢。
您可能会发现slackware上的ps向您显示每个进程的单独线程。 Linux中的线程基本上是使用clone()而不是fork()创build的独立进程,这使得它们具有相同的地址空间。 在2.6内核上,ps通常可以检测哪些进程是线程,哪些不是。 也许slackware对于它们的ps版本有一个稍微不同的行为。
你可能会发现更好的/不同的运气使用
ps auxw | grep java
听起来像你看到的线程,他使用什么版本的“PS”? 要求他检查手册页,以显示没有线程的进程。