【发布时间】:2014-01-09 11:17:53
【问题描述】:
我相信我要问的问题是不可能的。仍在尝试寻找是否有我不知道的方法或方法。
我有一个损坏的管道错误,我有目标进程的 pid 但没有名称。有什么办法,我可以使用pid找出进程名称(可能已经终止)。
【问题讨论】:
-
您可以找到仍然存在的进程的名称。但如果它已经终止并且它的父节点已经调用
wait()来收割它,它就不再存在,你也找不到它的名字。
我相信我要问的问题是不可能的。仍在尝试寻找是否有我不知道的方法或方法。
我有一个损坏的管道错误,我有目标进程的 pid 但没有名称。有什么办法,我可以使用pid找出进程名称(可能已经终止)。
【问题讨论】:
wait() 来收割它,它就不再存在,你也找不到它的名字。
正如 Barmar 在他的评论中所说,这通常是不可能的。一旦进程终止,系统就会忘记有关进程的所有信息。
当然,您的流程可能会合规,以帮助您了解更多信息。如果您可以修改有问题的进程,您可以让他们将其 PID 记录到一个特殊的位置,您可以稍后在其中查找哪个 PID 曾经属于哪个进程。
不过,这不适用于您无法修改的程序。在这些情况下,仍然可以在它们周围放置一个包装器,它首先记录 PID,然后将execs 记录到想要的程序。
#!/bin/bash
echo "$$: $*" >> /home/alfe/var/pid.log
exec "$@"
如果你既没有启动有问题的程序也不能修改它,我担心你没有选择。
【讨论】: