Когда я делаю 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
Хостинг 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-битное, при условии, что у вас есть чип Intel / AMD.источник
i386
на более старых 32-битных платформах (и я даже видел, что некоторые пакеты скомпилированыi586
- хотя я не уверен, будет ли он когда-либо выводитьсяuname
)uname -m
дает вам архитектуру, которую ядро выбирает для этого конкретного процесса, а не нативную архитектуру ядра. Смотрите эту ссылку .uname -m
действительно сообщает реальную архитектуру. Если это не так, то, скорее всего, администратор действительно хочет, чтобы вы поверили, что вы используете другую архитектуру, и вам лучше всего признать, что он знает, что делает. Если вы являетесь администратором, и вы балуетесь,setarch
то вы все равно знаете лучше.setarch
и вы можете их использовать, и вы можете вызывать такой скрипт, даже не подозревая, что он вызываетuname -m
что-то другое. Возможно, возможно даже вероятно, что именно такие вопросы и являются причиной, по которой ОП задает вопрос.init
считает, что оно 32-разрядное: для этого используется 64-разрядное ядро с 32-разрядным пользовательским пространством. Многие системы компиляции зависят отuname -m
определения флагов компилятора, например, флаг GDB, они должны быть снабжены поддельной личностью. Но какое-то другое пользовательское приложение может по-прежнему хотеть знать, какое у него ядро (например, для некоторых низкоуровневых нужд), независимо от индивидуальности.Я думаю, что самый точный способ
здесь это точно показывает
64
нашел на этом наконечнике
getconf
это из пакета libc-bin (в Ubuntu)источник
Если вам нужен простой, но подробный отчет о вашей системе (CPU, Kernel и Core OS), а не только ядре, то вот небольшой скрипт bash, который быстро даст вам ответы.
Если вы достаточно знаете об особенностях 32-битных / 64-битных процессоров и S / W, это просто удобно. Если вы не очень много знаете и думаете, что ваша «система» является 32-битной или 64-битной, то это поможет вам обнаружить, что истина может быть более сложной (части вашей системы могут быть 64-битными, а другие 32-битными), не вводя вас в заблуждение.
Опять же, этот сценарий (и ответ) не для буквального вопроса "Как я узнаю, работает ли мое ядро Linux в 32-битной или 64-битной версии?" но для тех кто тоже хочет знать арку своего процессора и ядра ОС SW.
Примеры отчетов
Вот примеры для довольно необычного случая:
Отчет из мини-скрипта (для опытных пользователей)
Отчет из более крупного скрипта (для менее опытных пользователей)
Скрипты
Мини-скрипт (для опытных администраторов)
Эти 4 строки дают всю необходимую информацию.
Большой скрипт (для менее опытных пользователей)
Этот сценарий печатает много объяснений и полезен, если у вас нет опыта по этому вопросу, и вы столкнулись с особым случаем.
Если вы хотите узнать больше, прочитайте эти две страницы, откуда я получил большую часть информации a) /programming/246007/how-to-determine-whether-a-given-linux-is-32- бит или 64-бит б) https://unix.stackexchange.com/a/134394/73271
источник
Если вы хотите видеть только ту платформу, на которой вы работаете, вы можете использовать
Полный список поддерживаемых опций для
uname
ISисточник
uname -i
печатные изданияGenuineIntel
, которые не совсем то, что он ищет.Unknown
на Mac.i386
на моей машине!CLFLUSHSIZE
ничего не говорит вам о режиме работы процессора. Согласно этому ответу , это относится к наименьшей очищаемой единице кеша. В вашем случае строки кэша считываются / записываются в единицах по 64 байта.uname
результат слишком велик, чтобы быть полезным, как показывает таблица примеров из Википедии . Самый надежный метод,getconf LONG_BIT
как показано в ответе Водолея . Это работает вне зависимости от архитектуры процессора, поэтому на ARM, Power или MIPS это просто как на x86.источник