在 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
我正在寻找一种简单可靠的方法来使用标准 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