Когда я делаю cat в /proc /cpuinfo, она показывает строку с clflushsize: 64
Означает ли это, что мое ядро работает на 64 битах?
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
Мой хостинг 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-битное, при условии, что у вас есть чип Intel/AMD.
Я думаю, что самый точный способ
getconf LONG_BIT
здесь это точно показывает 64
нашел на этом наконечнике
getconf
из пакета libc-bin (в Ubuntu)
Если вы хотите видеть только ту платформу, на которой вы работаете, вы можете использовать
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
Эти четыре команды bash расскажут вам практически все, что вы хотели бы знать:
grep -w 'lm' /proc/cpuinfo > /dev/null && echo "You have a 64bit CPU" || echo "You have a 32bit CPU"
echo "Your kernel reports it's running on a $(uname -m|sed -e 's/x86_64/64bit/' -e 's/i.86/32bit/') machine"
echo "Your /sbin/init process is $(file /sbin/init|sed -e 's/^.* \(32\|64\)-bit.*$/\1bit/')"
echo "Your C compiler is setup to produce $(getconf LONG_BIT)bit executables"
Если результаты кажутся противоречивыми, обратите внимание на следующие факты:
и прочитайте эту страницу https://stackoverflow.com/questions/246007/how-to-determine-whether-a-given-linux-is-32-bit-or-64-bit и этот ответ https://unix. stackexchange.com/a/134394/73271
CLFLUSHSIZE
ничего не говорит вам о режиме работы процессора. Согласно этому ответу, это относится к наименьшей очищаемой единице кеша. В вашем случае строки кэша считываются / записываются в единицах по 64 байта.
Вывод uname
варьируется слишком сильно, чтобы быть полезным, как показывает таблица примеров из Википедии. Самый надежный метод - getconf LONG_BIT
как показано в ответе Водолея. Это работает независимо от архитектуры процессора, поэтому на ARM, Power или MIPS это просто как в x86.