লিনাক্স বিতরণ নির্ধারণ করুন


11

লিনাক্স সার্ভারের কী স্বাদ চলছে তা নির্ধারণ করার চেষ্টা করছি। আমি কার্নেল সংস্করণটি নির্ধারণ করার চেষ্টা করছি না - তবে বিতরণকারীকে রেটার করছি।

জিসিসি ইনস্টল করা আছে এবং সংস্করণ আউটপুটে এটি রেডহ্যাট বলে

# gcc --version
gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-11)

এর অর্থ কি আমি নিরাপদে আমার সার্ভারটিকে রেডহ্যাট সার্ভার হিসাবে ধরে নিতে পারি? এটি খুঁজে পাওয়ার জন্য আরও ভাল - 100% বুলেটপ্রুফ পদ্ধতি আছে? এছাড়াও অন্যান্য লিনাক্স স্বাদগুলির জন্য - কেবল এই সার্ভারটি নয়?

সম্পাদনা করুন: বিষয়বস্তু /etc/এটির ক্ষেত্রে সহায়তা করে - তবে আমি এমন একটি সমাধান চাই যা লিনাক্সের অন্যান্য সংস্করণেও কাজ করে।

# 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

আমার কোন ফাইল *releaseবা *versionফাইল নেই/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

আমি এলএসবি চেষ্টা করেছি

# lsb_release -a
LSB Version:
Distributor ID: n/a
Description:    (none)
Release:        n/a
Codename:       n/a

এছাড়াও - আমি অনুমান করি যে আমি একটি এর ভিতরে আছি chroot jail(আসলে এটি কী তা নিশ্চিত নয়) যা সম্ভবত এই সমস্যার কারণ হতে পারে।


আপডেট করা হয়েছে:

আমি মনে করি এটি আমার জন্য এটি করে। আমি মনে করি আমি নিরাপদে ধরে নিতে পারি যে আমি সেন্ট-ওএস ব্যবহার করছি।

# cat /proc/version
Linux version 2.6.9-103.plus.c4smp (mockbuild@builder10.centos.org) (gcc version 3.4.6 20060404 (Red Hat 3.4.6-11)) #1 SMP Wed Dec 21 16:17:23 EST 2011

কেন আপনি জানতে হবে না? সম্ভবত এর পরিবর্তে সাধারণ বিতরণ-নির্দিষ্ট সরঞ্জামগুলির জন্য পরীক্ষা করা (উদাহরণস্বরূপ প্যাকেজ পরিচালকগণ) আপনি যা চান তা করবে?
ড্যানিয়েল প্রাইডেন 21

1
ভাল, আমি যা জানতে চাই তা হ'ল যদি আমি স্থানীয়ভাবে সার্ভারটিকে ভার্চুয়াল মেশিন হিসাবে প্রতিলিপি করতে পারি এবং স্থানীয় ভার্চুয়াল মেশিনে স্টাফ ইনস্টল করতে পারি, তবে বাইনারিগুলি দূরবর্তী মেশিনে অনুলিপি করতে পারি। আমি ভেবেছিলাম সঠিক প্ল্যাটফর্মটি সন্ধান করা ভাল সূচনা পয়েন্ট হবে।
বিলি মুন

2
উপরের ডিরেক্টরি তালিকাটি অসম্পূর্ণ (যেমন হোস্টগুলি অনুপস্থিত, init.d, আরসি *)। এটা কি পরীক্ষা?

আপনি এই সার্ভারটি কীভাবে অ্যাক্সেস করছেন? এটি কি সম্ভব যে আপনি সরাসরি সার্ভারের ফাইল সিস্টেমে অ্যাক্সেস না পেয়ে বরং ক্রুট কারাগারের অভ্যন্তরে রয়েছেন?
ড্যানিয়েল প্রাইডেন 21

আমি অনুমান করি আমি একটি ক্রুট কারাগারের অভ্যন্তরে থাকতে পারি - এর অর্থ কি আমি অন্তর্নিহিত সিস্টেমটি খুঁজে পাচ্ছি না?
বিলি মুন

উত্তর:


4
cat /proc/version

উদাহরণ:

  1. উবুন্টু:

    $ cat /proc/version
    Linux version 3.11.0-13-generic (buildd@roseapple) (gcc version 4.8.1 \
    (Ubuntu/Linaro 4.8.1-10ubuntu8) ) #20-Ubuntu SMP Wed Oct 23 07:38:26 UTC 2013
    
  2. রেড হ্যাট / সেন্টোস:

    $ cat /proc/version
    Linux version 2.6.32-220.13.1.el6.x86_64 (mockbuild@c6b6.bsys.dev.centos.org) \
    (gcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) ) #1 SMP Tue Apr 17 23:56:34 BST 2012
    

আপনি কোন লিনাক্স বিতরণ ব্যবহার করছেন তা কীভাবে জানবেন তা দেখুন ?


এটি দেখায় যে কার্নেলটি কোথায় সংকলিত হয়েছিল তা নয় আপনি কোন বিতরণ চালাচ্ছেন। অনেক ক্ষেত্রে কার্নেল একই বিতরণে পুরানো সংস্করণে সংকলিত হচ্ছে।
pabouk

13

বেশিরভাগ আধুনিক লিনাক্স ডিস্ট্রোজে নিম্নলিখিত কমান্ডটি আপনাকে তার তথ্য দেবে:

lsb_release -a

1
না, এটা সত্য নয়। এটি কেবলমাত্র ডেবিয়ান এবং ডেরিভেটিভদের জন্য কাজ করে
মারিয়াসম্যাটুটিয়

1
এই কমান্ডটি রেড হ্যাট এবং ডেরিভেটিভস (অর্থাত CentOS) এ ডিফল্টরূপে ইনস্টল করা হয়নি। আপনি ব্যবহারের পূর্বে স্পষ্টভাবে এটি ইনস্টল করা আছে: yum install redhat-lsb-core
pabouk

@ মারিয়াসমাতুটিয়া আসলে এটি এর চেয়ে অনেক বেশি বিস্তৃত তবে সর্বদা ডিফল্টরূপে ইনস্টল করা হয় না।
টের্ডন

@ এটারডন আপনাকে ধন্যবাদ, আমি এটি জানতাম না।
মারিউস ম্যাটুটিয়া

@ মারিয়াসমাতুটিয়া আরও তথ্যের জন্য এখানে দেখুন, এটি সুস থেকে অনুপস্থিত বলে মনে হচ্ছে তবে আরএইচ-তে ইনস্টল করা উচিত।
টের্ডন

9

/etc/issue একটি ভাল সূচনা পয়েন্ট হতে পারে।

বিভিন্ন বিতরণের জন্য তথ্য ফাইলগুলি পরিদর্শন করে আরও পাওয়া যাবে:

Novell SuSE    /etc/SuSE-release
OpenSuSE       /etc/SuSE-release, /etc/os-release
Red Hat,CentOS /etc/redhat-release, /etc/redhat_version
Fedora         /etc/fedora-release, /etc/redhat-release, /etc/os-release
Slackware      /etc/slackware-release, /etc/slackware-version
Debian         /etc/debian_release, /etc/debian_version
Mandrake       /etc/mandrake-release
Yellow dog     /etc/yellowdog-release
Sun JDS        /etc/sun-release 
Solaris/Sparc  /etc/release 
Gentoo         /etc/gentoo-release
Amazon Linux   /etc/system-release
PLD Linux      /etc/pld-release, /etc/os-release
ArchLinux      /etc/arch-release, /etc/os-release

আরও তথ্যের জন্য ইউনিক্স ফোরাম দেখুন ।


1
দুর্ভাগ্যক্রমে আমার কাছে কোনও ফাইল শেষ নেই releaseবা versionআমার etcডিরেক্টরিতে নেই
বিলি মুন

4

যদি /etc/issueঅনুপস্থিত থাকে তবে এক বা একাধিক /etc/*_releaseফাইল থাকতে পারে ।

উদাহরণস্বরূপ, আমার উবুন্টু সিস্টেমে রয়েছে /etc/lsb-release:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.04
DISTRIB_CODENAME=natty
DISTRIB_DESCRIPTION="Ubuntu 11.04"

বন্ধুর সেন্টোস সিস্টেমে (রেড হ্যাট ভিত্তিক) রয়েছে /etc/redhat-release:

CentOS release 5.6 (Final)

আমি জানি না এটি কতটা সর্বজনীন।


না releaseবা versionফাইলগুলি আমার/etc/
বিলি মুন

@ বিলিমুন আমি বিশ্বাস করি যে লিনাক্স বিতরণগুলি তাদের বিতরণে lsb_re দয়া করে ইউটিলিটি যুক্ত করতে কেবল সাম্প্রতিক। lsb_release -a
Alpha01

টিপটির জন্য ধন্যবাদ - দুর্ভাগ্যবশত এবার আমাকে সাহায্য করে না
বিলি মুন

2

বিড়াল / ইত্যাদি / ইস্যু আপনার প্রশ্নের উত্তর দিতে পারে।

ডিস্ট্রো নির্মাতারা এখানে আপনার পক্ষে বন্ধুত্বপূর্ণ নয়। প্রথমত, প্রত্যেকেই মনে করে যে এটিই একমাত্র সত্য উপায়।

সম্ভবত, ডিস্ট্রো স্নিগ্ধ করার চেষ্টা করার পরিবর্তে, আপনি যে নির্দিষ্ট প্রশ্নের উত্তর দিতে হবে সে সম্পর্কে আপনাকে আরও বিস্তারিতভাবে সন্ধান করা উচিত। আপনি যে কার্যকারিতাটি দেখছেন তাতে মনোযোগ দিন, এটি সরবরাহকারী ডিস্ট্রো নয়। সর্বোপরি, ডিস্ট্রোর একটি নতুন সংস্করণ ঘুরে দেখা যায় এবং কোনও নির্দিষ্ট অক্ষের বিপরীত দিকে যেতে পারে।


3
/etc/issueআমার সার্ভারে কোনও নেই
বিলি মুন

হ্যাঁ. মনে রাখবেন যে /etc/issueএড়িয়ে চলার ক্রমগুলি থাকতে পারে \nএবং যেমন \l। এর অর্থ কী, man 5 issueএবং man getty( /etc/issueফাইলটি প্রাথমিকভাবে দ্বারা ব্যবহারের উদ্দেশ্যে করা হয়েছে getty) তা দেখতে। অবশ্যই সিস্টেমের মালিক /etc/issueকোনও খারাপ কারণেই সম্পাদনা করতে পারেন ।
কিথ থম্পসন 21

আমি মনে করি না যে /etc/issueবিদ্যমান থাকা প্রয়োজন, বা বিতরণ বিক্রেতা সম্পর্কে কোনও তথ্য থাকা দরকার। এটি সাধারণত করে, তবে আমি মনে করি না আপনি এটির উপর নির্ভর করতে পারেন।
ড্যানিয়েল প্রাইডেন 21

@ ড্যানিয়েলপ্রাইডেন ভালভাবে প্রতিদিন কিছু শিখেন। আমি এর আগে কখনও কারও অনুপস্থিতিতে দৌড়াতে পারতাম না।
bmargulies

1

ব্যবহার করুন facter(হ্যাঁ এটি এর বানান)।

ফ্যাক্টর পুতুলের সহযোগী, এটি ভেরিয়েবলগুলি সরবরাহ করে যা অনুসন্ধান করা যেতে পারে যার মধ্যে সিস্টেম সম্পর্কিত তথ্য রয়েছে।

উদাহরণস্বরূপ, কয়েক ডজন ভেরিয়েবলের মধ্যে কয়েকটি এখানে ফ্যাক্টর ফিরে আসতে পারে

$ facter
...
operatingsystem => CentOS
operatingsystemmajrelease => 6
operatingsystemrelease => 6.4
osfamily => RedHat
...

আপনি সার্ভারটি রেডহ্যাট চালাচ্ছেন তা দেখার জন্য আপনি কেবল অস্পষ্টভাবে জিজ্ঞাসা করতে পারেন

$ facter osfamily
RedHat

ডকুমেন্টেশন দেখুন: http://puppetlabs.com/facter


0

uname -a

যে কোনও টাক্সের জন্য সর্বদা কাজ করে


1
এটি কার্নেলের সংস্করণ স্ট্রিংয়ের প্রতিবেদন করে , যা আপনার হোস্ট যদি কোনও ভিন্ন বিতরণ থেকে কার্নেল চালাচ্ছে - তবে খালি ধাতুতে বা ওপেনভিজেড বা ভিএসবার্সের মতো কোনও সরঞ্জামের কারণে।
sarnold

হ্যাঁ, তবে আমি মনে করি এই ক্ষেত্রে Q এর লেখক স্মেথকে জানবেন। পরিস্থিতি সম্পর্কে "বিদেশী" কার্নেলটি বরং অদ্ভুত ক্ষেত্রে
অলস ব্যাজার

0

এটি করার কোনও একক নিশ্চিত অগ্নি উপায় নেই। আমি একটি অনুরূপ জিজ্ঞাসা প্রশ্ন উপর unix.se এবং এই তথ্য পাবার সবচেয়ে ভালো উপায় একটি স্ক্রিপ্ট যে চেক বিভিন্ন উৎস:

#!/bin/sh
# Detects which OS and if it is Linux then it will detect which Linux
# Distribution.

OS=`uname -s`
REV=`uname -r`
MACH=`uname -m`

GetVersionFromFile()
{
    VERSION=`cat $1 | tr "\n" ' ' | sed s/.*VERSION.*=\ // `
}

if [ "${OS}" = "SunOS" ] ; then
    OS=Solaris
    ARCH=`uname -p` 
    OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
elif [ "${OS}" = "AIX" ] ; then
    OSSTR="${OS} `oslevel` (`oslevel -r`)"
elif [ "${OS}" = "Linux" ] ; then
    KERNEL=`uname -r`
    if [ -f /etc/redhat-release ] ; then
        DIST='RedHat'
        PSUEDONAME=`cat /etc/redhat-release | sed s/.*\(// | sed s/\)//`
        REV=`cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//`
    elif [ -f /etc/SuSE-release ] ; then
        DIST=`cat /etc/SuSE-release | tr "\n" ' '| sed s/VERSION.*//`
        REV=`cat /etc/SuSE-release | tr "\n" ' ' | sed s/.*=\ //`
    elif [ -f /etc/mandrake-release ] ; then
        DIST='Mandrake'
        PSUEDONAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//`
        REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//`
    elif [ -f /etc/debian_version ] ; then
        DIST="Debian `cat /etc/debian_version`"
        REV=""

    fi
    if [ -f /etc/UnitedLinux-release ] ; then
        DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
    fi

    OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})"

fi

echo ${OSSTR}

অন্য পছন্দটি প্রকৃতপক্ষে ব্যবহার করা হচ্ছে gcc --version, যেহেতু gccসর্বদা একটি নির্দিষ্ট ডিস্ট্রোর জন্য সর্বদা সংকলিত থাকে, এটি তুলনামূলকভাবে বহনযোগ্য হবে। আমি আপনাকে ইউ ও এল-এ আমার প্রশ্নের গৃহীত উত্তরটি পড়ার জন্য সুপারিশ করছি এটি পরিস্থিতিটি খুব সুন্দরভাবে ব্যাখ্যা করেছে।


0

এই কমান্ডটি দেবিয়ান ভিত্তিক এবং রেডহ্যাট ভিত্তিক বিতরণগুলির জন্য কাজ করেছে: টিআর ফিল্টার ব্যবহার করে আপনি নথিকে এক-শব্দ-প্রতি-লাইন ফর্ম্যাটে রূপান্তর করেন এবং তারপরে বিতরণের নাম সম্বলিত প্রথম লাইনটি গণনা করুন।

tr -s ' \011' '\012' < /etc/issue | head -n 1

-1

আপনার সেরা পদ্ধতি

cat /etc/*release

আমি /etcপ্রশ্নে আমার ডিরেক্টরি তালিকাভুক্ত । অন্যান্য উত্তরের বিষয়ে আলোচনা হিসাবে, এই সমাধানটি আমার পক্ষে কার্যকর হয় না।
বিলি মুন

আপনি ls / ইত্যাদি * মুক্তির চেষ্টা করেছেন; । এটি ভুল. Ls / ইত্যাদি / * প্রকাশের চেষ্টা করুন। এটি কাজ করবে। খুব নিশ্চিত
Unnikrishnan

আমি /etc/ডিরেক্টরিতে এলএসও করেছি এবং আপনি দেখতে পাচ্ছেন যে কোনও ফাইলই এখানে শেষ নেইrelease
বিলি মুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.