linux上的java进程

时间:2011-11-12 17:13:38

标签: java linux process

我在linux上运行了一个测试java程序,如下所示testuser

su testuser -c "./java Test" &

当我看到流程时,我发现创建了2个流程。 一个作为root用户生成testuser所拥有的另一个。

# ps -ef | grep Test
root     19684 19522  0 19:18 pts/0    00:00:00 su testuser -c ./java Test
testuser  19685 19684  1 19:18 pts/0    00:00:00 ./java Test
root     19699 19522  0 19:18 pts/0    00:00:00 grep Test

为什么在这里创建了2个进程?

即使我杀死了root拥有的进程,另一个继续运行。 这里是否创建了2个java进程?

当我以测试用户身份运行我的网络应用程序[tomcat-spring]时,我看到只创建了一个进程。为什么这里只有一个过程?

1 个答案:

答案 0 :(得分:3)

  • id为19684的进程是您启动的su命令。
  • su进程本身然后将​​java进程作为具有不同用户标识的子进程启动
  • 上面输出中的第三列实际上是父进程id,您可以从中看到java进程将进程19684(su进程)作为父进程

杀死子进程(19685)也应该使su进程终止(至少在我的系统上进行终止)。

使用sleep 3600代替java在我的系统上尝试此操作时,我看到在杀死su进程时,su也会终止(发送信号)子进程。