我正在寻找一种使用标准shell命令确定正在运行的进程的位数的简单而可靠的方法。
虽然我已经看到了Solaris和Linux的解决方案,但我希望找到一种适用于更加简单,可靠和可移植性的解决方案。
在Linux中,这可以使用/proc/$PID/exe
,/proc/$PID/maps
,/proc/$PID/auxv
来完成,但这些方法要么不在Solaris上,要么不能从sh
轻松调用。
在Solaris中,执行此操作的方法是pflags $PID
,但大多数Linux发行版上都没有安装pflags
。
答案 0 :(得分:5)
在Solaris上,实用程序/bin/pflags
将为您提供所需的信息:
$ /bin/pflags $$ | fgrep "data model"
data model = _ILP32 flags = ORPHAN|MSACCT|MSFORK
_ILP32
是一个32位进程,而_LP64
是一个64位进程。
在Linux上,没有什么直接相似的。您可能需要查看完整的答案:https://unix.stackexchange.com/questions/106234/determine-if-a-specific-process-is-32-or-64-bit
答案 1 :(得分:1)
file /proc/<pid>/object/a.out
将告诉您Solaris进程的位数