如何找到当前二进制文件运行的路径?

4

在某个地方寻找了很久,最终没有得到我想要的。

我正在使用带有Linux系统的嵌入式板卡。许多用户通过 telnet 访问它。所以每个用户都可以将一些二进制文件复制到某个地方并执行,例如 ./binary。因此,我可以通过简单的 ps 命令看到这个进程正在运行,但我不知道它是从哪里运行的。

在某个地方发现了一个解决方法,使用 which 命令,但据我理解(如果我没有错的话),which 命令只能查找二进制文件的路径,无论它是否正在执行。

如果多个用户在不同的路径中复制了相同的二进制文件呢?

还找到了另一个解决方法,使用 readlink,但是我的目标板仅支持有限的 busybox binary,因此没有 readlink

还有另一种解决方法,如:

file /proc/"proess id"/exe 但是由于我的板子上有自定义的Linux系统,其中仅包含有限的功能和二进制文件,因此这里没有 file 命令。

那么还有其他解决方法吗?


2
你可以使用 ls -l 命令,并提取 -> 后面的组件。 - user3159253
1
关闭投票:这不是关于工具的问题。我宁愿将其归类为不相关话题,适用于http://unix.stackexchange.com/。 - BЈовић
@user3159253 使用readlink比解析ls输出更好... - twalberg
1个回答

3
尝试使用ls -l /proc/"进程ID"/exe命令。 来自GNU coreutils的ls实用程序会在-l选项下显示链接,但我没有有关busyboxls的确切信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接