Java-процесс на Linux - PullRequest
       0

Java-процесс на Linux

2 голосов
/ 12 ноября 2011

Я запустил тестовую Java-программу на Linux как 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] в качестве testuser, я вижу только один созданный процесс.Почему здесь только один процесс?

1 Ответ

3 голосов
/ 12 ноября 2011
  • процесс с идентификатором 19684 - это команда su, которую вы запустили.
  • Затем сам процесс su запускает процесс java как дочерний процесс с другим идентификатором пользователя
  • третий столбец в вышеприведенном выводе на самом деле является идентификатором родительского процесса, из которого вы можете видеть, что процесс java имеет процесс 19684 (процесс su) в качестве родительского

Уничтожение дочернего процесса (19685) также должно привести к завершению процесса su (по крайней мере, в моей системе).

Попытка сделать это в моей системе с помощью sleep 3600 вместо java Я вижу, что при уничтожении процесса su su также завершает (отправляет сигнал) дочерний процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...