linux - ইউনিক্স/লিনাক্স প্ল্যাটফর্মে ওএসের নাম এবং সংস্করণ সন্ধান করার সর্বোত্তম উপায়




unix (7)

আমার ইউনিক্স / লিনাক্স প্ল্যাটফর্মে ওএসের নাম এবং সংস্করণটি সন্ধান করতে হবে। এর জন্য আমি নিম্নলিখিতগুলি চেষ্টা করেছিলাম:

  1. lsb_release ইউটিলিটি

  2. /etc/redhat-release বা নির্দিষ্ট ফাইল

তবে এটি সেরা সমাধান বলে মনে হচ্ছে না কারণ LSB_RELEASE সমর্থন আর আরএইচএল 7 এর পক্ষে নেই।

কোনও ইউনিক্স বা লিনাক্স প্ল্যাটফর্মে কাজ করবে এমন কোনও উপায় আছে কি?


"Lsb_release" কমান্ডটি নির্দিষ্ট লিনাক্স স্ট্যান্ডার্ড বেস এবং বিতরণ-সম্পর্কিত তথ্য সরবরাহ করে। সুতরাং নীচের কমান্ডটি ব্যবহার করে আমরা অপারেটিং সিস্টেমের নাম এবং অপারেটিং সিস্টেম সংস্করণ পেতে পারি।

" lsb_release -a "


আমি লিনাক্স সিস্টেম সম্পর্কে সংক্ষিপ্ত তথ্য খুঁজতে নিম্নলিখিত কমান্ডগুলি প্রস্তুত করেছি:

clear
echo "\n----------OS Information------------"
hostnamectl | grep "Static hostname:"
hostnamectl | tail -n 3
echo "\n----------Memory Information------------"
cat /proc/meminfo | grep MemTotal
echo "\n----------CPU Information------------"
echo -n "Number of core(s): "
cat /proc/cpuinfo | grep "processor" | wc -l
cat /proc/cpuinfo | grep "model name" | head -n 1
echo "\n----------Disk Information------------"
echo -n "Total Size: "
df -h --total | tail -n 1| awk '{print $2}'
echo -n "Used: "
df -h --total | tail -n 1| awk '{print $3}'
echo -n "Available: "
df -h --total | tail -n 1| awk '{print $4}'
echo "\n-------------------------------------\n"

তথ্য.এস এর মতো কোনও শ ফাইলটিতে অনুলিপি করুন এবং আটকান এবং তারপরে sh info.sh কমান্ডটি ব্যবহার করে এটি চালান


এই কমান্ডটি আপনাকে আপনার অপারেটিং সিস্টেমের বিবরণ দেয়

cat /etc/os-release


এটি সমস্ত লিনাক্স পরিবেশের জন্য সূক্ষ্ম কাজ করে।

#!/bin/sh
cat /etc/*-release

উবুন্টুতে:

$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.4 LTS"

বা 12.04:

$ cat /etc/*-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.4 LTS"
NAME="Ubuntu"
VERSION="12.04.4 LTS, Precise Pangolin"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu precise (12.04.4 LTS)"
VERSION_ID="12.04"

RHEL এ:

$ cat /etc/*-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
Red Hat Enterprise Linux Server release 6.5 (Santiago)

অথবা এই স্ক্রিপ্টটি ব্যবহার করুন:

#!/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}

নিম্নলিখিত কমান্ডটি সুন্দরভাবে আমার জন্য কাজ করেছে। এটি আপনাকে ওএসের নাম এবং সংস্করণ দেয়।

lsb_release -a

প্রতিটি বিতরণে এর মধ্যে পার্থক্যযুক্ত ফাইল রয়েছে তাই আমি বেশিরভাগ সাধারণগুলি লিখি:

---- CentOS Linux distro
`cat /proc/version`
---- Debian Linux distro
`cat /etc/debian_version`
---- Redhat Linux distro
`cat /etc/redhat-release` 
---- Ubuntu Linux distro
`cat /etc/issue`   or   `cat /etc/lsb-release`

শেষ এক / ইত্যাদি / ইস্যুটির অস্তিত্ব ছিল না তাই আমি দ্বিতীয়টি চেষ্টা করেছিলাম এবং এটি সঠিক উত্তরটি দিয়েছিল


perl এবং Linux::Distribution , একটি পুরানো সমস্যার সবচেয়ে পরিষ্কার সমাধান:

#!/bin/sh

perl -e '
    use Linux::Distribution qw(distribution_name distribution_version);

    my $linux = Linux::Distribution->new;
    if(my $distro = $linux->distribution_name()) {
          my $version = $linux->distribution_version();
          print "you are running $distro";
          print " version $version" if $version;
          print "\n";
    } else {
          print "distribution unknown\n";
    }
'






unix