Linuxの `uname -m`はどのようにして情報を取得しますか?


15

Linux uname -mはどこから情報を入手しますか?

私は確かに64ビットのマシンを持っているので尋ねています、そしてuname -aそれをuname -r確認しますが、uname -m印刷しi686ます。それはどこから取得しますか?

回答:


23

unameソフトウェアとハ​​ードウェアから情報を印刷することを考慮する必要があります。64ビットマシンが32ビットLinuxディストリビューションを実行している可能性があります。

uname -a次の情報を順番に出力します:カーネル名、ノード名、カーネルリリース、カーネルバージョン、マシン、プロセッサ、ハードウェアプラットフォーム、オペレーティングシステム。64ビットのハードウェアとi686カーネルが表示されている場合は、32ビットのLinuxカーネルがインストールされています。

あなたの質問全体に答えるために:unameはシステムコールであり、このコマンドラインツールはそれを使用しています。簡単に実行できることを確認できますstrace 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)                           = ?

2
strace -v完全なuname戻り値を表示するために使用します。
user1686 14年

私は過去4年間LinuxとUNIXを使用してきましたが、straceについては全く知りませんでした。私はそれがフードの下でptraceを使用するのだろうか...私が簡単にチェックできるようにするプログラムがあった場合のみ!;)
パルティアショット14年

2
@ParthianShot ptraceを使用しています。確認するには、を使用しますstrace strace uname -a。また、出力をファイルに送信して、快適に読み込めるようにします。
tbodt 14年

@ParthianShotそして、彼らはltraceまだ言及していません。:)
oakad 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.