Manchmal ist es erforderlich, schnell Details wie Kernelname, Version, Hostname usw. der von Ihnen verwendeten Linux-Box zu ermitteln.
Auch wenn Sie all diese Details in den jeweiligen Dateien finden, die im proc-Dateisystem vorhanden sind, ist es einfacher, das uname-Dienstprogramm zu verwenden, um diese Informationen schnell zu erhalten.
Die grundlegende Syntax des uname-Befehls lautet:
uname [OPTION]...
Sehen wir uns nun einige Beispiele an, die die Verwendung des Befehls „uname“ demonstrieren.
uname ohne Option
Wenn der Befehl „uname“ ohne Option ausgeführt wird, gibt er nur den Kernelnamen aus. Die Ausgabe unten zeigt also, dass es der „Linux“-Kernel ist, der von diesem System verwendet wird.
$ uname Linux
Sie können auch uname -s verwenden, was auch den Kernelnamen anzeigt.
$ uname -s Linux
Erhalten Sie den Hostnamen des Netzwerkknotens mit der Option -n
Verwenden Sie die Option uname -n, um den Netzwerkknoten-Hostnamen Ihrer Linux-Box abzurufen.
$ uname -n dev-server
Die obige Ausgabe entspricht der Ausgabe des Befehls hostname.
Kernel-Release mit Option -r abrufen
Der uname-Befehl kann auch zum Abrufen der Kernel-Versionsinformationen verwendet werden. Dazu kann die Option -r verwendet werden.
$ uname -r 2.6.32-100.28.5.el6.x86_64
Holen Sie sich die Kernel-Version mit der Option -v
Der uname-Befehl kann auch verwendet werden, um die Kernel-Versionsinformationen abzurufen. Dazu kann die Option -v verwendet werden.
$ uname -v #1 SMP Wed Feb 2 18:40:23 EST 2011
Erhalten Sie den Hardwarenamen der Maschine mit der Option -m
Der Befehl uname kann auch verwendet werden, um den Namen der Maschinenhardware abzurufen. Dazu kann die Option -m verwendet werden. Dies weist darauf hin, dass es sich um ein 64-Bit-System handelt.
$ uname -m x86_64
Prozessortyp mit Option -p abrufen
Der Befehl uname kann auch verwendet werden, um die Informationen zum Prozessortyp abzurufen. Dazu kann die Option -p verwendet werden. Wenn der Befehl uname die Informationen zum Prozessortyp nicht abrufen kann, wird „unknown“ in der Ausgabe ausgegeben.
$ uname -p x86_64
Manchmal sehen Sie möglicherweise „unbekannt“ als Ausgabe dieses Befehls, wenn uname die Informationen zum Prozessortyp nicht abrufen konnte.
Holen Sie sich die Hardwareplattform mit der Option -i
Der Befehl uname kann auch verwendet werden, um die Informationen zur Hardwareplattform abzurufen. Dazu kann die Option -i verwendet werden. Wenn der Befehl uname die Informationen zur Hardwareplattform nicht abrufen kann, wird „unknown“ in der Ausgabe ausgegeben.
$ uname -i x86_64
Manchmal sehen Sie möglicherweise „unbekannt“ als Ausgabe dieses Befehls, wenn uname die Informationen über die Plattform nicht abrufen konnte.
Erhalten Sie den Namen des Betriebssystems mit der Option -o
Der Befehl uname kann auch verwendet werden, um den Namen des Betriebssystems abzurufen. Dazu kann die Option -o verwendet werden.
Zum Beispiel:
$ uname -o GNU/Linux
Alle Informationen mit der Option uname -a erhalten
Alle Informationen, auf die wir bei weitem gelernt haben, mit verschiedenen Flags zuzugreifen, können auf einmal abgerufen werden. Dazu kann die Option -a verwendet werden.
$ uname -a Linux dev-server 2.6.32-100.28.5.el6.x86_64 #1 SMP Wed Feb 2 18:40:23 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
Unbekannter Wert in der uname-Ausgabe
Beim Schreiben dieses Artikels war ich etwas neugierig, warum das uname-Dienstprogramm auf meinem Laptop, auf dem Ubuntu ausgeführt wird, „unbekannt“ für den Prozessortyp (-p) und die Hardwareplattform (-i) zurückgibt. Ich habe ein wenig über dieses Problem recherchiert.
Eine Erklärung, die ich gefunden habe, war, dass der Befehl uname die Funktion uname() (man 2 uname) verwendet, die alle Informationen aus der folgenden Kernelstruktur liest:
struct utsname { char sysname[]; /* Operating system name (e.g., "Linux") */ char nodename[]; /* Name within "some implementation-defined network" */ char release[]; /* OS release (e.g., "2.6.28") */ char version[]; /* OS version */ char machine[]; /* Hardware identifier */ #ifdef _GNU_SOURCE char domainname[]; /* NIS or YP domain name */ #endif };
Da Informationen zum Prozessortyp und zur Hardwareplattform in dieser Struktur nicht vorhanden sind, gibt der uname-Befehl für sie „unbekannt“ zurück.
Die andere Erklärung, die ich gefunden habe, war, dass in uname.c die Behandlung der Option -p wie folgt ist:
... ... ... char const *element = unknown; #if HAVE_SYSINFO && defined SI_ARCHITECTURE { static char processor[257]; if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor)) element = processor; } #endif ... ... ...
Die Makros HAVE_SYSINFO und SI_ARCHITECTURE sind nirgendwo im Kernel definiert und daher wird unknown zurückgegeben. Dasselbe könnte für die Option -i gelten.
Ich bin mir über das genaue Problem nicht sicher, aber wir können davon ausgehen, dass die Optionen -p und -i keine Standard- und lediglich Erweiterungen sind und daher bei der Verwendung des uname-Befehls in einem Skript vermieden werden sollten.