uname -m
daje i686 i uname -m
daje wyjście i686 i386 w maszynie Red Hat Enterprise Linux Server wersja 5.4 (Tikanga). Muszę zainstalować Oracle Database 10g Release 2 na tym komputerze. Jak więc zdecydować, czy architektura jądra jest 32-bitowa czy 64-bitowa?
linux
command-line
x86
cpu-architecture
użytkownik2914
źródło
źródło
uname -m
iuname -m
?uname -m
pokazuje i? 86, masz system 32-bitowy.getconf WORD_BIT
.getconf WORD_BIT
zwraca 32 na moim 64-bitowym UbuntuOdpowiedzi:
i386 i i686 są 32-bitowe.
x86_64 jest 64-bitowy
przykład dla wersji 64-bitowej:
EDYCJA:
Widzisz, czy mój Linux ARM 32 lub 64 bit? dla ARM
źródło
uname -m
. To pokaże tylko architekturę.To proste! Użyj
arch
polecenia.źródło
arch
wracai386
, aleuname -a
pokazujex86_64
.@behrooz jest poprawny. Niestety
uname
wymaga znajomości architektury. Właściwie szukałem listy architektur i znalazłem ten artykuł, który odpowiada na twoje pytanie. W odniesieniu douname -m
:Aby ustalić, czy sprzęt jest w stanie uruchomić 64-bitowe jądro
Poszukaj następujących danych wyjściowych (wszystkie flagi pobrane z odpowiedzi na przepełnienie stosu dla tego samego pytania)
lm
Flaga oznacza procesor w trybie Long - procesor 64-bitowytm
Flaga oznacza tryb chroniony - 32-bitowy procesorrm
Flaga oznacza tryb rzeczywisty - 16-bitowy procesorźródło
(EDYCJA: ta odpowiedź jest NIEPRAWIDŁOWA. Dzięki komentarzowi @ Lizardx)
W Bash, używając przepełnienia liczb całkowitych:
Jest to o wiele bardziej wydajne niż wywoływanie innego procesu lub otwieranie plików.
źródło
((
jest Bashismem i nie jest zdefiniowany przez POSIX mywiki.wooledge.org/Bashism#Conditionals((1<<32)-1)
W przypadku Debiana :
Na moim komputerze
My Raspberry Pi 2
źródło
checkinstall
, thx!Najprostszym sposobem jest uruchomienie:
który wyśle 64 lub 32 w zależności od tego, czy jest to 32 czy 64 bity.
na przykład:
źródło
getconf LONG_BIT
zostanie wydrukowana,32
mimo że używasz 64-bitowego jądra.użyj syscap z projektu Formake
syscap pozwala na sondowanie wielu właściwości systemu i zależności testowych. Jest to przenośny skrypt powłoki.
Uzyskaj architekturę procesora:
Uzyskaj nazwę i wersję jądra:
źródło
Innym sposobem jest sprawdzenie architektury, dla której skompilowano jakiś plik systemowy
źródło
Możesz też skorzystać ze sposobu, w jaki wewnętrznie robi to polecenie uname , jeśli chcesz zaimplementować niektóre rzeczy na własną rękę:
źródło
Oto inna metoda użycia
uname
.Od
man uname
:... -i, --hardware-platform print the hardware platform or "unknown" ...
# uname -i x86_64
#
źródło
Jeśli szukasz prostego jedno-liniowego, jest to najbardziej niezawodne rozwiązanie, jakie znalazłem, które zwraca 64 lub 32 . Nie ma znaczenia, czy korzystasz z ARM, czy nie, i powinien działać na każdym systemie używającym bash lub sh .
Uwaga, zakłada się, że system jest 32-bitowy lub 64-bitowy. Zobacz moje wyjaśnienie poniżej, jeśli chcesz wykryć architekturę 8-16 lub nieco inną.
Co tu się dzieje?
Logika jest bardzo prosta i wszystko sprowadza się do sposobu, w jaki komputery przechowują podpisane liczby całkowite. Architektura 32-bitowa ma tylko 32 bity, które może wykorzystać do przechowywania podpisanych liczb całkowitych, podczas gdy architektura 64-bitowa ma 64 bity! Innymi słowy, zbiór liczb całkowitych, które można zapisać, jest skończony. Połowa tego zestawu reprezentuje liczby ujemne, a połowa reprezentuje liczby dodatnie. Liczba całkowita ze znakiem równa -1 jest reprezentowana jako największa liczba, jaką można zapisać w danej liczbie bitów dla tej architektury. W systemie 32-bitowym -1 może być reprezentowane przez wartość szesnastkową 0xFFFFFFFF (która jest 32 bitami binarnymi, wszystkie równe 1). W systemie 64-bitowym 0xFFFFFFFF tłumaczy się na 4 294 967 295, podstawa 10, podczas gdy 0xFFFFFFFFFFFFFFFF jest reprezentacją dla -1). Możesz zobaczyć, jak łatwo to skaluje w przypadku systemów 8- lub 16-bitowych, które będą równe -1 przy 0xFF i 0xFFFF,
źródło