32 비트 또는 64 비트 Linux를 실행 중인지 어떻게 알 수 있습니까?


답변:


37

"uname -m"은 찾고있는 명령입니다. 최신 인텔 및 AMD 프로세서에서 32 비트 및 64 비트를 모두 실행할 수 있으므로 "uname -p"는 도움이되지 않습니다 (또한 요즘 대부분 작동하지 않습니다. 여기에서 core2는 "uname -p"에 대한 응답을 생각합니다. "알 수 없음").

일부 하드웨어 및 시스템 관련 패키지는 32 비트 및 64 비트 라이브러리를 모두 설치하여 안전한 곳에 설치하므로 / usr / lib64의 존재를 찾는 것은 도움이되지 않습니다. 내 (데비안) 시스템에서 fakeroot 패키지가 그렇게합니다.

"uname -m"의 출력에 관해서는, i386 또는 i686이면 32 비트이고, x86_64 (또는 alpha, ia64 또는 다른 64 비트 아키텍처로는 본 적이 없습니다.) : 64 비트입니다.

(재미있게, 내 64 비트 FreeBSD 서버는 "amd64"를 반환합니다. 인텔 쿼드 코어에서는 조금 이상하지만 x86 64 비트 아키텍처의 역사를 알고 있다면 완전히 이해할 수 있습니다.


1
설치 아키텍처 또는 실제 CPU 아키텍처를 알려줍니다. 예를 들어 64 비트 CPU에 32 비트 OS를 설치 한 경우 i686 또는 x86_64를 반환합니까?
monkut

15

uname -a하고 x86_64를 찾으십시오. CPU가 64 비트를 처리 할 수 ​​있는지 알고 싶다면 cat / proc / cpuinfo를보고 플래그 내에서 lm을 찾으십시오.


3
고양이 / proc / cpuinfo | grep ^ 플래그 | perl -e '$ _ = <>; print "x86_64 \ n": "not x86_64 \ n"'
Brad Gilbert

6

RedHat / CentOS의 경우 :

$ uname -a
Linux cs-centos 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 12:03:43 EST 2008 i686 athlon i386 GNU/Linux

32 비트

  • i686 및 / 또는 i386

64 비트

  • x86_64의 에서 끝나면 uname -a 출력

6

혼동을 피하기 위해 32 비트 유저 랜드로 64 비트 커널을 실행할 수 있습니다. 이 경우 uname -m반환 x86_64하지만 64 비트 라이브러리가 설치되어 있지 않으므로 대부분의 64 비트 프로그램이 실행되지 않습니다.

당신이 끝나면 uname 확인 그래서 일단, 당신을 위해 볼 필요가 /lib64/ld-linux-x86-64.so.2, /lib64/libc-2.7.so그리고 /lib/ld-linux.so.2, /lib/libc-2.7.so64 비트 및 32 비트 라이브러리를 사용할 수 있는지 여부를 확인 할 수 있습니다. 그리고 실제로 확인하려면 해당 파일을 실행하고 올바르게 실행되는지 확인하십시오.

또 다른 유용한 정보는 출력 lsb_release -a이 크로스 디스트로이 며 어떤 아키텍처 별 LSB 모듈을 사용할 수 있는지보고합니다.


2
불행히도 lsb_release -auserland 아키텍처를 출력하지 않습니다
Joni


2

또 다른 방법은 perl에게 컴파일러에게 긴 정수의 크기가 무엇이라고 말했는지 물어 보는 것입니다.

$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64

vs.

$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
32

또는 gcc가 설치되어 있다면 C와 동일합니다.

$ cat > bits.c <<EOC
> #include <stdlib.h>
> #include <stdio.h>
> 
> int main(void) {
>    printf("%d\n", (int)sizeof(long)*8);
> 
>    exit(0);
> }
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
64

vs.

[...]
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
32

:-)


그것은 단지 당신에게 perl의 기본 버전이 무엇을하는지 알려줍니다 ..
pjc50

@ pjc50 : 그리고 요점은?
asjo

1
그의 요점은 64 비트 시스템에서 32 비트 Perl을 가질 수 있다는 것입니다.
niXar

@niXar : 가능할 것 같지만, 리눅스 배포판이 이상하게 들릴 것입니다. 어쨌든 C 버전을 사용하고 ;-)
asjo

1

중복 :

Linux + Linux 버전 32 비트 또는 64 비트를 확인하는 방법

uname -m 은 커널의 실행중인 '아키'/ 아키텍처 만 제공합니다. 64 비트 지원 CPU에서 32 비트 GNU / Linux 배포를 실행 중인지 여부는 알려지지 않습니다.

CPU 기능을 알려면 :

 cat /proc/cpuinfo

'LM'플래그는 'LONG MODE'(64 비트 확장, AMD의 AMD64 또는 인텔의 EM64T)를 나타내므로 64 비트 시스템에 있어야합니다.


0
$ uname -p

x86_64

2
"uname -p"는 내 시스템에서 "애슬론"을 반환합니다. 그다지 도움이되지 않습니다 ...
webwesen 2016 년

3
또한 uname -p에서 "알 수없는"컴퓨터를 사용했습니다.
Cube_Zombie

0

/ usr / lib64가 있다면 x86_64를 실행하고있는 것입니다.


3
mkdir / usr / lib128 && echo "모양, 128 비트 컴퓨터가 있습니다!"
niXar

0

브래드 길버트의 명령에는 펄 버그가있었습니다. 문제를 해결했으며 아래 명령이 작동합니다. cat / proc / cpuinfo | grep ^ 플래그 | perl -e '$ = <>; print ($ ? "x86_64 \ n": "x86_64 \ n"아님)'

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.