2014-01-09 3 views
0

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

У меня ошибка обрыва трубы, когда у меня есть pid процесса назначения, но не имя. Есть ли способ, я могу узнать имя процесса (которое возможно уже завершено) с помощью pid.

+2

Вы можете найти название процессов, которые все еще существуют. Но если он завершился, и его родитель вызвал 'wait()', чтобы потрогать его, он больше не существует и вы не можете узнать его имя. – Barmar

ответ

1

Как сказал в своем комментарии Бармар, это невозможно. Система забывает всю информацию о процессах, как только они заканчиваются.

Но, конечно, ваши процессы могут быть выполнены, чтобы помочь вам узнать больше. В случае, если вы можете модифицировать рассматриваемые процессы, вы можете позволить им регистрировать свой PID в специальном месте, где вы можете посмотреть позже, какой PID принадлежал один раз, в какой процесс.

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

#!/bin/bash 
echo "$$: $*" >> /home/alfe/var/pid.log 
exec "[email protected]" 

В случае, если вы не являетесь начальником рассматриваемой программы и не можете изменить ее, вы не в курсе.

Смежные вопросы