Próbuję ustalić, jaki smak działa serwer linux. Nie próbuję ustalić wersji jądra - ale oceniam dystrybutora.
gcc jest zainstalowany, a na wyjściu wersji jest napisane RedHat
# gcc --version
gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-11)
Czy to oznacza, że mogę bezpiecznie założyć, że mój serwer to serwer RedHat. Czy jest lepsza - w 100% kuloodporna - metoda, aby się tego dowiedzieć? Także dla innych smaków linuksowych - nie tylko tego serwera?
Edycja: zawartość /etc/
na wypadek, gdyby to pomogło - ale chciałbym rozwiązania, które działa również dla innych wersji Linuksa.
# 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
Nie mam plików *release
ani *version
plików/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
Próbowałem LSB
# lsb_release -a
LSB Version:
Distributor ID: n/a
Description: (none)
Release: n/a
Codename: n/a
Poza tym - chyba jestem w środku chroot jail
(nie jestem do końca pewien, co to jest), co może być przyczyną tego problemu.
Zaktualizowano:
Myślę, że to dla mnie to robi. Myślę, że mogę bezpiecznie założyć, że używam cent-os.
# 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
Odpowiedzi:
Przykłady:
Ubuntu:
Red Hat / CentOS:
Zobacz także Jak się dowiedzieć, której dystrybucji Linux używasz?
źródło
W większości współczesnych dystrybucji Linuksa następujące polecenie poda ci informacje:
źródło
yum install redhat-lsb-core
./etc/issue
może być dobrym punktem wyjścia.Więcej można znaleźć, sprawdzając pliki informacyjne dla różnych dystrybucji:
Zobacz forum Unixa po więcej szczegółów.
źródło
release
aniversion
w moimetc
kataloguJeśli go
/etc/issue
brakuje, może być jeden lub więcej/etc/*_release
plików.Na przykład mój system Ubuntu ma
/etc/lsb-release
:System CentOS znajomego (oparty na Red Hat) ma
/etc/redhat-release
:Nie wiem jak uniwersalna to jest.
źródło
release
lubversion
pliki w moim/etc/
cat / etc / issue może odpowiedzieć na twoje pytanie.
Twórcy dystrybucji nie są tu dla ciebie przyjaźni. Po pierwsze, każdy uważa, że jest to jedyny prawdziwy sposób.
Najprawdopodobniej zamiast próbować wąchać dystrybucję, powinieneś bardziej szczegółowo przyjrzeć się konkretnemu pytaniu, na które naprawdę musisz odpowiedzieć. Skoncentruj się na funkcjonalności, na którą patrzysz, a nie na dystrybucji. W końcu nowa wersja dystrybucji może się odwrócić i iść w przeciwnym kierunku na dowolnej osi.
źródło
/etc/issue
na moim serwerze/etc/issue
mogą zawierać sekwencje specjalne, takie jak\n
i\l
. Aby zobaczyć, co to znaczy,man 5 issue
iman getty
(/etc/issue
plik jest przeznaczony głównie do użytku przezgetty
). Oczywiście właściciel systemu mógł edytować/etc/issue
z jakiegoś nikczemnego powodu./etc/issue
aby istniało jakiekolwiek wymaganie, aby zawierać jakiekolwiek informacje o dostawcy dystrybucji. Często się zdarza, ale nie sądzę, żebyś mógł na tym polegać.Użyj
facter
(tak to się pisze).Facter jest towarzyszem marionetek, zapewnia zmienne, które można przeszukiwać, które zawierają informacje o systemie.
Na przykład, oto tylko kilka z kilkudziesięciu zmiennych, które czynnik może zwrócić
Możesz po prostu zapytać o fakt rodziny osfamily, aby zobaczyć, czy na serwerze działa RedHat
Sprawdź dokumentację: http://puppetlabs.com/facter
źródło
uname -a
Działa zawsze dla każdego Tuxa
źródło
Nie ma jednego, pewnego, ognistego sposobu na zrobienie tego. Zadałem podobne pytanie na unix.se, a najlepszym sposobem na uzyskanie tych informacji jest skrypt, który sprawdza różne źródła:
Rzeczywiście używa się innego wyboru
gcc --version
, ponieważgcc
zawsze jest on kompilowany dla określonej dystrybucji, będzie on względnie przenośny. Gorąco polecam przeczytanie zaakceptowanej odpowiedzi na moje pytanie w U&L, która bardzo ładnie wyjaśnia sytuację.źródło
To polecenie działało w przypadku dystrybucji opartych na Debianie i Redhat: Używając filtru tr, konwertujesz dokument do formatu jednego słowa na linię, a następnie zliczasz pierwszy wiersz zawierający nazwę dystrybucji.
źródło
Thos jest najlepszą metodą
źródło
/etc
katalog w pytaniu. Jak omówiono w innych odpowiedziach, to rozwiązanie nie działa dla mnie./etc/
katalogu i widać, że nie ma tam żadnych plikówrelease