在 Solaris 和 Linux 上确定进程位数的最简单方法

Simplest way of determining process bitness on Solaris and Linux

我正在寻找一种简单可靠的方法来使用标准 shell 命令确定 运行 进程的位数。

虽然我看过 Solaris 和 Linux 的解决方案,但我想找到一种适用于这两种解决方案的解决方案,以实现额外的简单性、可靠性和可移植性。

在 Linux 中,这可以使用 /proc/$PID/exe/proc/$PID/maps/proc/$PID/auxv 来完成,但是这些方法要么在 Solaris 上不存在,要么不能轻易地从sh.

在 Solaris 中,pflags $PID 的一种实现方式是 pflags $PID,但是 pflags 并未安装在大多数 Linux 发行版上。

file /proc/<pid>/object/a.out 将告诉您 Solaris 进程的位数

在 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