Ich versuche festzustellen, welche Version von Linux Server ausgeführt wird. Ich versuche nicht, die Kernel-Version zu bestimmen, sondern den Distributor zu bewerten.
gcc ist installiert und in der Versionsausgabe steht RedHat
# gcc --version
gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-11)
Bedeutet dies, dass ich davon ausgehen kann, dass mein Server ein RedHat-Server ist? Gibt es eine bessere - 100% kugelsichere Methode, um dies herauszufinden? Auch für andere Linux-Varianten - nicht nur für diesen Server?
Bearbeiten: Inhalt von /etc/
falls es hilft - aber ich möchte eine Lösung, die auch für andere Linux-Versionen funktioniert.
# ls /etc/
./ backupmxhosts domainusers host.conf localdomains mailips pam.d/ relayhosts shadow trustedmailhosts
../ bashrc* exim.conf inputrc localtime man.config passwd resolv.conf skipsmtpcheckhosts userdomains
DIR_COLORS cron.deny exim.pl ld.so.cache lynx.cfg mtab profile secondarymx spammeripblocks vimrc
aliases demodomains exim.pl.local* ld.so.conf mail/ my.cnf profile.d/ senderverifybypasshosts sudoers
antivirus.exim demouids group localaliases mailhelo nsswitch.conf protocols services termcap
Ich habe keine *release
oder *version
Dateien in/etc/
# ls /etc*release; ls /etc/*version
/bin/ls: /etc/*release: No such file or directory
/bin/ls: /etc/*version: No such file or directory
Ich habe LSB ausprobiert
# lsb_release -a
LSB Version:
Distributor ID: n/a
Description: (none)
Release: n/a
Codename: n/a
Außerdem - ich glaube, ich bin in einem chroot jail
(nicht wirklich sicher, was das ist), was wahrscheinlich die Ursache für dieses Problem sein könnte.
Aktualisiert:
Ich denke, das macht es für mich. Ich glaube, ich kann davon ausgehen, dass ich Cent-OS verwende.
# cat /proc/version
Linux version 2.6.9-103.plus.c4smp ([email protected]) (gcc version 3.4.6 20060404 (Red Hat 3.4.6-11)) #1 SMP Wed Dec 21 16:17:23 EST 2011
Antworten:
Beispiele:
Ubuntu:
Red Hat / CentOS:
Siehe auch Woher wissen Sie, welche Linux-Distribution Sie verwenden?
quelle
In den meisten modernen Linux-Distributionen gibt Ihnen der folgende Befehl Informationen:
quelle
yum install redhat-lsb-core
./etc/issue
könnte ein guter Ausgangspunkt sein.Weitere Informationen finden Sie in den Info-Dateien auf verschiedene Distributionen:
Weitere Informationen finden Sie im Unix-Forum .
quelle
release
oderversion
in meinemetc
VerzeichnisWenn
/etc/issue
es fehlt, sind möglicherweise eine oder mehrere/etc/*_release
Dateien vorhanden.Zum Beispiel hat mein Ubuntu-System
/etc/lsb-release
:Das CentOS-System eines Freundes (basierend auf Red Hat) hat
/etc/redhat-release
:Ich weiß nicht, wie universell das ist.
quelle
release
oderversion
Dateien in meinem/etc/
cat / etc / issue könnte Ihre Frage beantworten.
Die Distributoren sind hier nicht freundlich zu Ihnen. Erstens denkt jeder, dass dies der einzig wahre Weg ist.
Anstatt zu versuchen, an der Distribution zu schnüffeln, sollten Sie sich höchstwahrscheinlich die spezielle Frage genauer ansehen, die Sie tatsächlich beantworten müssen. Konzentrieren Sie sich auf die Funktionalität, die Sie sich ansehen, nicht auf die Distribution, die sie bereitstellt. Schließlich kann sich eine neue Version einer Distribution umdrehen und auf einer bestimmten Achse in die entgegengesetzte Richtung gehen.
quelle
/etc/issue
auf meinem Server/etc/issue
Escape-Sequenzen wie\n
und enthalten können\l
. Um zu sehen, was diese bedeuten,man 5 issue
undman getty
(die/etc/issue
Datei ist hauptsächlich für die Verwendung durch bestimmtgetty
). Natürlich könnte der Besitzer des Systems/etc/issue
aus irgendeinem schändlichen Grund bearbeiten ./etc/issue
es erforderlich ist, zu existieren oder Informationen über den Distributionsanbieter zu enthalten. Das ist normalerweise der Fall, aber ich glaube nicht, dass Sie sich darauf verlassen können.Verwenden Sie
facter
(ja, so wird es geschrieben).Facter ist ein Begleiter der Marionette. Es bietet abfragbare Variablen, die Informationen über das System enthalten.
Hier sind zum Beispiel nur einige der Dutzenden von Variablen, die der Faktor zurückgeben kann
Sie können einfach die osfamily-Tatsache abfragen, um festzustellen, ob auf dem Server RedHat ausgeführt wird
Lesen Sie die Dokumentation: http://puppetlabs.com/facter
quelle
uname -a
Funktioniert immer für jeden Tux
quelle
Es gibt keinen einzigen sicheren Weg, dies zu tun. Ich habe eine ähnliche Frage zu unix.se gestellt. Der beste Weg, um diese Informationen zu erhalten, ist ein Skript, das eine Vielzahl von Quellen überprüft:
Die andere Wahl ist in der Tat
gcc --version
, da diesgcc
immer für eine bestimmte Distribution kompiliert wird, wird dies relativ portabel sein. Ich empfehle Ihnen dringend, die akzeptierte Antwort auf meine Frage bei U & L zu lesen . Sie erklärt die Situation sehr gut.quelle
Dieser Befehl funktionierte für Debian- und Redhat-basierte Distributionen: Mit dem Filter tr konvertieren Sie das Dokument in ein Ein-Wort-pro-Zeile-Format und zählen dann die erste Zeile, die den Distributionsnamen enthält.
quelle
Das ist die beste Methode
quelle
/etc
Verzeichnis in der Frage aufgelistet . Wie in anderen Antworten erläutert, funktioniert diese Lösung bei mir nicht./etc/
Verzeichnis und Sie können sehen, dass keine Dateien dort enden inrelease