비트 수를 반환하는 Linux 명령 (32 또는 64)?


13

프로세서가 32 비트 또는 64 비트 프로세서인지를 나타 내기 위해 프로그래밍 방식으로 32 또는 64를 반환하기 위해 실행할 수있는 Linux 명령은 무엇입니까?


1
@Sathya : Linux가 아니더라도 프로세서가 64 비트 일 수 있기 때문에 정확히 중복 된 것은 아닙니다.
Gilles 'SO- 악마

답변:


13
  • 에서 라인을 확인하여 CPU 가 64 비트인지, 32 비트인지 또는 둘 다 가능한지 확인할 수 있습니다 . 아키텍처 제품군에서 가능한 플래그를 알아야합니다. 예를 들어, i386 / amd64 플랫폼에서이 플래그는 amd64 가능 CPU를 식별합니다 (해당 플래그가없는 CPU는 i386 전용).flags/proc/cpuinfolm

    grep -q '^flags\s*:.*\blm\b' /proc/cpuinfo    # Assuming a PC
    
  • 로 아키텍처를 쿼리하여 커널이 32 비트인지 64 비트인지 확인할 수 있습니다 uname -m. 예를 들어 i[3456]8632 비트이지만 x86_6464 비트입니다. 여러 아키텍처에서 64 비트 커널은 32 비트 사용자 프로그램을 실행할 수 있으므로 uname -m64 비트 커널 이 표시 되더라도 64 비트 라이브러리를 사용할 수 있다는 보장은 없습니다.

    [ "$(uname -m)" = "x86_64" ]    # Assuming a PC
    

    또한 uname -m"가상화 된"값을 반환 할 수도 있습니다. 예를 들어 Linux의 경우 setarch i386 bashamd64 시스템에서 실행 uname -m하고 해당 bash에서 실행 하는 경우 uname -m보고가 표시 i386됩니다. 이렇게하면 커널이 64 비트 커널 인 경우에도 예를 들어 크로스 컴파일을 설정하지 않고 32 비트 프로그램을 컴파일하는 것처럼 "32 비트 시스템"인 것처럼 가장 할 수 있습니다.

  • 명령으로 LSB 지원을 조회하여 사용자 영역에서 사용 가능한 항목을 확인할 수 있습니다 lsb_release. 보다 정확하게 는 지원되는 LSB 기능 lsb_release -s:분리 된 목록을 인쇄 합니다. 각 기능의 형식은 입니다. 예를 들어, ix86에 C 라이브러리의 가용성에 의해 표시되는 동안, AMD64위한 아날로그이다. 모든 배포판이 사용 가능한 모든 LSB 모듈을 선언하는 것은 아니므로 이런 방식으로 감지 가능한 것보다 더 많은 것을 사용할 수 있습니다.module-version-architecturecore-2.0-ia32core-2.0-amd64

  • 당신은 5 선 C 프로그램이 인쇄 컴파일하여 개발을위한 기본 단어 크기 (C 컴파일러를 사용할 수있는 가정)을 찾을 수 있습니다 sizeof(void*)또는 sizeof(size_t).


3
(그들이이있는 경우 등) GNU 시스템에서, 당신은 할 수 있어야 getconf WORD_BIT또는 getconf LONG_BIT대신 (그것이 비록 사소한, 휴대용) 자신의 C 프로그램을 컴파일 할 필요없이.
추후 공지가있을 때까지 일시 중지되었습니다.

@ 데니스 : 수정 주셔서 감사합니다. 나는 getconf여기 에서 사용하는 것을 생각하지 못했습니다 . 원칙적으로는 훌륭하게 들리지만 결과가 하나 이상 (일반적으로 gcc / icc 또는 Linux의 경우 gcc / native cc) 인 경우 사용중인 특정 C 컴파일러에 결과를 적용하기가 어렵습니다. 표준 시스템 getconf에서 c89또는 c99에 적용해야 $(getconf PATH)하지만 실제로 cc는 공급 업체 c89래퍼 가 실행 하는 대체 제품 을 설치하는 사람이 걱정 됩니다.
Gilles 'SO- 악마 그만해'11

.정규식에 누락 이 있습니다 : grep '^flags.*:.*\blm\b' /proc/cpuinfo. 또한 그것은 -q깃발 없이 나를 위해 작동합니다
byf-ferdy

@ byf-ferdy 누락되지 않았습니다. .“0 개 이상의 공백”이 있었지만 실제로 탭이 있습니다. 탭을 허용하도록 정규 표현식을 변경했습니다. -q플래그를 사용하면 출력이 없지만 명령의 종료 상태는 플래그가 있는지 여부를 알려줍니다. 출력을 원하면 -q플래그를 제거하십시오 .
Gilles 'SO- 악한 중지'

@Gilles 아 나는 -q깃발 에 대해 몰랐다 . Ty, 지금 작동 :)
byf-ferdy

3

64 비트를 실행 중인지 확인 uname -a하고 사용할 수 있습니다 x86_64. 다른 건 (내가 아는 한) 당신은 32 비트를 실행하거나 같은 비 PC 하드웨어에있는 alpha, sparc또는, ppc64.


3
다른 건 당신은 32 비트, 또는 비 PC 하드웨어를 (예 : 실행중인과 alpha, sparc64, ppc64, ...
질 'SO-정지되는 악'

@Gilles : 감사합니다. 이에 따라 답변을 편집했습니다.
Wuffers


1

유형:

uname -a

당신이 얻을 경우, x86_64 GNU/Linux당신은 64 비트 커널을 실행하고 있습니다. 비슷한 것을 얻는다면 i386/i486/i586/i686아마도 32 비트 커널을 실행하고있을 것입니다


1
그것은 질문이 아닙니다.
harrymc

1

getconf 는 가장 적은 시스템 호출을 사용합니다.

$ strace getconf LONG_BIT | wc -l
253

$ strace arch | wc -l
280

$ strace uname -m | wc -l
281

$ strace grep -q lm /proc/cpuinfo | wc -l
301
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.