我在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]时,我看到只创建了一个进程。为什么这里只有一个过程?
答案 0 :(得分:3)
杀死子进程(19685)也应该使su
进程终止(至少在我的系统上进行终止)。
使用sleep 3600
代替java
在我的系统上尝试此操作时,我看到在杀死su
进程时,su也会终止(发送信号)子进程。