более не существующие процессы и их родительские процессы

Я столкнулся с этим, ТАК отправьте:

https://stackoverflow.com/questions/356722/killing-a-defunct-process-on-unix-system

"Вы уничтожили процесс, но мертвый процесс не исчезает из таблицы процессов, пока ее родительский процесс не работает, задача назвала "жатву" (по существу вызов ожидают (3), чтобы тот процесс считал свой статус выхода). Мертвые процессы, которые не пожинали, называют "процессами-зомби".

Вот мой более не существующий процесс:

 ps aux | grep ruby
1000     11958 16.3  0.0      0     0 pts/3    Z    Jul11 1065:28 [ruby] <defunct>

Это - то, что это, как предполагалось, сделало:

RAILS_ENV=production bundle exec ruby lib/daemons/db_service_ctl start% 

В основном это работает, демоны направляющих обрабатывают. Я хотел перезапустить его так, я пытался уничтожить его, но это отказалось умирать, и теперь у меня есть более не существующий процесс.

Вот его родительский процесс:

ps -f 11958            
UID        PID  PPID  C STIME TTY      STAT   TIME CMD
1000     11958 11957 16 Jul11 pts/3    Z    1065:28 [ruby] <defunct>

Родительский процесс 11957. proc cmdline похож на это:

 /proc/11957 $ cat cmdline
/bin/sh./script/db_service.sh%   

Это похоже на тот же сценарий оболочки, который я выполнил, поскольку демоны обрабатывают!

Таким образом, как это может быть родительским процессом также?

0
задан 23 May 2017 в 15:39

1 ответ

Просто - скрипт db.service.sh, который является родителем вашего процесса ruby, запустил исполняемый файл (с PID 11958). Когда вы запускаете программу из сценария, это новый процесс, родительским элементом которого является сценарий, который ее вызвал. Рассмотрим следующий сценарий:

#!/bin/bash

cat

Когда вы запустите его как test.sh, вы увидите, что bash является родителем, а cat - дочерним:

xxx   4087 10976  0 08:29 pts/2    00:00:00 /bin/bash ./test.sh
xxx   4088  4087  0 08:29 pts/2    00:00:00 cat
0
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: