Woher bezieht Linux uname -m
seine Informationen?
Ich frage, weil ich eine Maschine habe, die sicher 64-Bit ist, uname -a
und uname -r
bestätige, dass sie uname -m
druckt i686
. Woher kommt das?
Sie müssen berücksichtigen, dass uname
Informationen von Ihrer Software und Hardware gedruckt werden. Auf Ihrem 64-Bit-Computer wird möglicherweise eine 32-Bit-Linux-Distribution ausgeführt.
uname -a
druckt diese Informationen (in der angegebenen Reihenfolge) aus: Kernel-Name, Knotenname, Kernel-Release, Kernel-Version, Maschine, Prozessor, Hardware-Plattform, Betriebssystem. Wenn Sie 64-Bit-Hardware und einen i686-Kernel sehen, haben Sie einen 32-Bit-Linux-Kernel installiert.
Zur Beantwortung Ihrer gesamten Frage: uname ist ein Systemaufruf, der von diesem Befehlszeilentool verwendet wird. Sie können überprüfen, ob dies problemlos möglich iststrace uname -a
$ strace uname -a
execve("/bin/uname", ["uname", "-a"], [/* 23 vars */]) = 0
brk(0) = 0x9fa6000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b4abb365000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b4abb366000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
...
...
...
uname({sys="Linux", node="my_pc", ...}) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b4abe953000
uname({sys="Linux", node="my_pc", ...}) = 0
uname({sys="Linux", node="my_pc", ...}) = 0
write(1, "Linux my_pc 2.6.18-371.8.1.el5 "..., 99Linux my_pc 2.6.18-371.8.1.el5 #1 SMP Thu Apr 24 18:19:36 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
) = 99
close(1) = 0
munmap(0x2b4abe953000, 4096) = 0
exit_group(0) = ?
strace -v
diese Option, um die vollständigen Rückgabewerte für uname anzuzeigen.strace strace uname -a
. Und leiten Sie die Ausgabe in eine Datei, damit Sie sie bequem lesen können.ltrace
. :)