답변:
uname -a
커널에 알려줄 것입니다. 끝 비트는 아키텍처를 알려줍니다.
두 가지 예 :
내 맥 :
Darwin Mac.local 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386
My Dreamhost 호스팅 :
Linux ecco 2.6.24.5-serf-xeon-c6.1-grsec #1 SMP Tue Oct 7 06:18:04 PDT 2008 x86_64 GNU/Linux
i386 = 32 비트
x86_64 = 64 비트
uname -m
커널이 컴파일 된 아키텍처를 제공합니다. 그것이 인쇄되면 i686
커널은 32 비트이고, 그렇다면 x86_64
64 비트입니다. 인텔 / AMD 칩이 있다고 가정합니다.
i386
이전의 32 비트 플랫폼에 있을 수도 있습니다 (그리고 심지어 패키지가 컴파일 된 것을 보았습니다 i586
- uname
그래도 출력 될지 확실하지 않습니다 )
uname -m
커널의 기본 아키텍처가 아니라 커널이이 특정 프로세스에 노출하도록 선택한 아키텍처를 제공합니다. 이 링크를 참조하십시오 .
uname -m
않는 실제 아키텍처를보고합니다. 그렇지 않은 경우 관리자는 실제로 다른 아키텍처를 사용하고 있다고 믿고 실제로 최선을 다하는 것이 그가하고있는 일을 알고 있다는 사실을 받아들이는 것입니다. 당신이 관리자이고 엉망 setarch
이라면 이미 어쨌든 더 잘 알고 있습니다.
setarch
하게 uname -m
할 것이라는 생각없이 그러한 스크립트를 사용할 수 있고 사용 하고 사용할 수 있습니다 . 이러한 종류의 문제가 OP가 요구하는 이유 일 수 있습니다.
init
이 32 비트라고 생각 하는 방식으로 시스템을 설정했을 수 있습니다 .이 상황은 32 비트 사용자 공간이있는 64 비트 커널입니다. 많은 컴파일 시스템은 uname -m
컴파일러 플래그를 결정하는데 의존합니다 ( 예 : GDB의 플래그). 그러나 일부 다른 사용자 공간 응용 프로그램은 성격과 상관없이 어떤 커널 유형 (예 : 일부 하위 수준 요구 사항)이 있는지 알고 싶어 할 수 있습니다.
당신이 원하는 경우 쉽지만 자세한 보고서 시스템 (CPU, 커널과 코어 OS 소프트웨어) 약 뿐만 아니라 커널을 여기에 신속하게 당신에게 해답을 줄 것이다 작은 bash는 스크립트입니다.
32 비트 / 64 비트 CPU와 소프트웨어의 특성에 대해 충분히 알고 있다면 간단합니다. 잘 모르고 "시스템" 이 32 비트 또는 64 비트 라고 생각 하면 혼란을주지 않으면 서 진실이 더 복잡 할 수 있다는 것을 발견하는 데 도움이 될 것입니다 (시스템의 일부는 64 비트 일 수도 있고 다른 32 비트 일 수도 있습니다).
이 스크립트 (및 답변)는 " Linux 커널 이 32 비트 또는 64 비트로 실행 중인지 어떻게 알 수 있습니까?"라는 문자적인 질문에 대한 것이 아닙니다. 그러나 CPU의 아치와 핵심 OS SW를 알고 싶은 사람들을 위해.
다음은 다소 특이한 예입니다.
You have a 64 bit CPU
Your kernel reports that the architecture is 32 bit
Your /sbin/init process is 64 bit
Your C compiler is configured to produce 32 bit executables
You have a 64 bit CPU
Your kernel reports that the architecture is 32 bit
If you are not the admin he can make a 64bit kernel report 32bit (see man setarch)
In this case he has (because we have 64bit programs)
Your /sbin/init process is 64 bit
Most other core OS programs will probably be 64 bits also.
You may use the following command to check a specific program.
file -L /path/to/program
Your C compiler is configured to produce 32 bit executables
(Note that a 64bit compiler may be setup to produce 32bit code)
이 4 줄은 모든 필수 정보를 제공합니다.
grep -w 'lm' /proc/cpuinfo > /dev/null && echo "You have a 64 bit CPU" || echo "You have a 32 bit CPU"
echo "Your kernel reports that the architecture is $(uname -m|sed -e 's/x86_64/64 bit/' -e 's/i.86/32 bit/')"
echo "Your /sbin/init process is $(file /sbin/init|sed -e 's/^.* \(32\|64\) bit.*$/\1bit/')"
echo "Your C compiler is configured to produce $(getconf LONG_BIT) bit executables"
이 스크립트는 많은 설명을 인쇄하며 주제에 대한 경험이없고 특별한 경우에 직면 할 때 유용합니다.
#!/bin/bash
# collect system info
grep -w 'lm' /proc/cpuinfo > /dev/null && CPU=64 || CPU=32
ARCH=$(uname -m|sed -e 's/x86_64/64/' -e 's/i.86/32/')
INIT=$(file -L /sbin/init|sed -e 's/^.* \(32\|64\)-bit.*$/\1/')
COMPILER=$(getconf LONG_BIT)
# if all values are the same we set UNIFORM="YES"
! echo "$CPU $ARCH $INIT $COMPILER" | grep -q "$CPU $CPU $CPU $CPU" && UNIFORM="NO" || UNIFORM="YES"
# report to the user
echo "You have a $CPU bit CPU"
echo "Your kernel reports that the architecture is $ARCH bit"
if [ "$UNIFORM" = "NO" ] && [ "$ARCH" = "32" ] ; then
echo " If you are not the admin he can make a 64bit kernel report 32bit (see man setarch)"
if [ "$INIT" = "64" ] || [ "$COMPILER" = "64" ] ; then
echo " In this case he has (because we have 64bit programs)"
else
echo " We don't see such signs so you most likely run a 32bit kernel"
echo " (A 64bit CPU can run 32bit kernels)"
fi
fi
echo "Your /sbin/init process is $INIT bit"
if [ "$CPU" = "64" ] ; then
echo " Most other core OS programs will probably be $INIT bits also."
echo " You may use the following command to check a specific program."
echo " file -L /path/to/program"
fi
if [ "$UNIFORM" = "NO" ] && [ "$INIT" = "32" ] ; then
echo " (Note that a 64bit kernel may start a 32bit init process)"
fi
echo "Your C compiler is configured to produce $COMPILER bit executables"
if [ "$UNIFORM" = "NO" ] && [ "$COMPILER" = "32" ] ; then
echo " (Note that a 64bit compiler may be setup to produce 32bit code)"
fi
더 많은 정보를 알고 싶다면 대부분의 정보를 얻을 수있는이 두 페이지를 읽으십시오 .a ) https : //.com/questions/246007/how-to-determine-whether-a-given-linux-is-32- 비트 또는 64 비트 b) https://unix.stackexchange.com/a/134394/73271
실행중인 플랫폼 만보 고 싶다면 사용할 수 있습니다
uname -i
지원되는 옵션의 전체 목록 uname
은
$ uname --help
Usage: uname [OPTION]...
Print certain system information. With no OPTION, same as -s.
-a, --all print all information, in the following order,
except omit -p and -i if unknown:
-s, --kernel-name print the kernel name
-n, --nodename print the network node hostname
-r, --kernel-release print the kernel release
-v, --kernel-version print the kernel version
-m, --machine print the machine hardware name
-p, --processor print the processor type or "unknown"
-i, --hardware-platform print the hardware platform or "unknown"
-o, --operating-system print the operating system
--help display this help and exit
--version output version information and exit
uname -i
GenuineIntel
그가 찾고있는 것이 아닌 prints .
Unknown
Mac에서.
i386
내 기계에 인쇄 합니다!
CLFLUSHSIZE
프로세서의 작동 모드에 대해서는 아무 것도 알려주지 않습니다. 이 답변 에 따르면 , 이는 가장 작은 플러시 가능 캐시 단위를 나타냅니다. 귀하의 경우 캐시 라인은 64 바이트 단위로 읽고 씁니다.
uname
Wikipedia의 예제 테이블을 한눈에 볼 수 있듯이 출력이 너무 다양하여 유용하지 않습니다. 가장 신뢰할 수있는 방법은 getconf LONG_BIT
에서 쇼로 물병 전원의 대답 . 이것은 프로세서 아키텍처에 관계없이 작동하므로 x86에서와 같이 ARM, Power 또는 MIPS에서 가정에 있습니다.