비트 수를 반환하는 Linux 명령 (32 또는 64)? 비트 또는 64 비트 프로세서인지를

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



답변

  • 에서 라인을 확인하여 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).


답변

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


답변

uname -m | sed 's/x86_//;s/i[3-6]86/32/'

답변

유형:

uname -a

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


답변

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