Як дізнатися деталі про обладнання на машині Linux?


40

- як отримати повний список апаратних компонентів у командному рядку (на машині без віконної системи)

Дякую.

Відповіді:



37

Якщо є, dmidecodeстане в нагоді. Зокрема на Dell, HP, IBM, де вони намагаються програмувати відповідну технічну інформацію в різні регістри.


7
dmidecode приємно. Одного разу, коли я використовував його для перегляду деталей пам'яті, я зрозумів, що ви також можете дізнатися тег служби Dell: dmidecode | grep -i серійний | egrep -o '[0-9A-Z] {7} $' | head -n1
Кайл Брандт

1
Погоджено, ви можете запустити dmidecode та просто накреслити потрібну інформацію.
барфун

1
Також чудово працює на обладнанні яблук.
Matt3o12

30

lspciє чудовою утилітою для переліку апаратного забезпечення системи. (Все що завгодно на шині PCI, все одно.)

cat /proc/cpuinfo - Відображає інформацію про процесор

cat /proc/meminfo - Відображає інформацію про пам'ять

dmesg(або cat /var/log/dmesg) містить деяку інформацію, не обов'язково всю.

Якщо у вас є система RedHat / CentOS, ви можете використовувати sosreportдля збору непоганої інформації, хоча я не знаю, чи є в ній вся інформація про обладнання, перерахована в ній.

Це кілька хороших місць, щоб почати знаходити інформацію, яку ви шукаєте.


3

Файлова система / proc дасть вам інформацію, яку ви хочете ... Але я не знаю, як ви отримаєте це одне просте місце.

'cat / proc / cpuinfo' розповість про ваш процесор 'cat / proc / devices', а також повідомить вам про обмежену інформацію про блокові пристрої. 'ifconfig -a' розповість про мережеві з'єднання

Інші зможуть розповісти вам про більше пристроїв. Виправляєте проблеми з конкретним пристроєм? Якщо так, то вам краще допоможуть задати конкретне запитання.


дякую ні, я намагаюся перейти від хоста до хоста і хотів би побачити, у чому різниця в апараті загалом - щоб побачити, чи можу я перейти шляхом повторної обробки зображень.
Євген

1
Поки початкові частини завантажувача працюють, більшість дистрибутивів просто виявлять зміни обладнання та адаптуються. Якщо у вас є проблеми з завантажувальною частиною, встановіть той самий дистрибутив, який ви переходите на нове обладнання, оновіть його на те саме ядро, що ви пересуваєтесь, а потім скопіюйте файл mkintrd у файлову систему зображень, і це має вирішити ваші проблеми із завантаженням. . Якщо це дійсно піде не так, ви все ще маєте всі дані на старій машині.
Майкл Шоу

Якщо у вас вже є Linux на другій машині, і він працює, якщо припустити, що ядро ​​є загальною збіркою і так само недавно, вона завантажить усі необхідні модулі (модулі є аналогічними драйверам Windows). Установки Linux насправді не специфічні для цього обладнання.
Кайл Брандт

Файл /boot/initrd-2.6.*.img не настільки загальний. Він використовується ядром, коли передає управління grub. Для завантаження вашої кореневої файлової системи потрібно мати всі налаштування та модулі. Цей файл узагальнено працює під управлінням mkinitrd, однак вам потрібно спочатку завантажити систему ...
Michael Shaw

2

inxi покаже майже все, запустіть без аргументів для короткої форми, проте варіантів багато, проте запустіть inxi -h, щоб побачити їх

inxiце "повнофункціональний інформаційний скрипт", як описано на домашній сторінці проекту: https://github.com/smxi/inxi

Ось інформація про те, як можна встановити його на Ubuntu: https://askubuntu.com/questions/284635/inxi-installation-on-ubuntu


Inxi - це порівняно новий інструмент, який не можна знайти в більшості дистрибутивів. Вам слід додати ще трохи інформації та посилань.
йогобрюс

1

Підсумовуючи це, я б сказав, що тут добре почати отримувати інформацію про вашу систему:

  1. dmesg - друкувати або керувати буфером кільця ядра
  2. lspci - список усіх пристроїв PCI
  3. lsusb - список USB-пристроїв
  4. / proc - обробляти інформацію псевдофайловою системою інформації


1

Мені дуже подобається використовувати " Facter ". Дає хороший список дуже корисної інформації.



0

Найпростіше - набрати " dmesg | more " в командному рядку, що дозволяє побачити весь вихідний засіб, що відбувається під час останнього запуску системи.


0

Для жорстких дисків я використовую користувальницький сценарій, який масажує в один список результатів:

cat /proc/partitions
cat /proc/mounts

parted -m /dev/sdX unit MB print # need to be root for parted
# or
parted -m -l unit MB print

blkid /dev/sdXN

0

нижче код u можна скопіювати за допомогою vi

#!/bin/bash

a=1; c=0
a=1; c=0
# Gather system information, can e.g. be sent to | mail in a cronjob
f_() { while read l; do echo $l; done < $f ; }
#
f_() { while read l; do echo $l; done < $f ; }
# TODO
# ----
# * Netstat output
# * Memory/swap information
# * ifconfig information
# * Make output dependent on argv
# * md5sum checks                               (done)
# * Keep previeous values and compare
# * How to
# * chmod a+x sysinfo.sh
# * ./sysinfo.sh
####################### DO NOT EDIT UNDER THIS LINE ###########################

siheader() {
        echo "================================================================"
        echo -e "* System statistics for: \t`hostname`.`dnsdomainname`"
        echo -e "* Generated on: \t\t`date`"
        echo -e "* Running as: \t\t\t`whoami`"
        echo
}

fuptime() {
        upSeconds=$(cat /proc/uptime | tr "." " " | awk '{print $1}')
        secs=$((${upSeconds}%60))
        mins=$((${upSeconds}/60%60))
        hours=$((${upSeconds}/3600/24))
        days=$((${upSeconds}/86400))
        if [ "${days}" -ne "0" ]
        then
                echo -n "${days} days, "
        fi
        echo "`printf '%02d' ${hours}`:`printf '%02d' ${mins}`:`printf '%02d' ${secs}`"
}

siuptime() {
        echo "=================== Uptime ====================================="
        echo -e "* Uptime: \t\t\t`fuptime`"
        if [ -x /usr/bin/uprecords ];
        then
                echo -e "* High score: \t\t\t`uprecords | tail -n1 | cut -d'|' -f1 | cut -d'n' -f3 | sed 's/^[[:blank:]]*//'`"
        fi
        echo -e "* Load average: \t\t`cat /proc/loadavg | head -c14`"
        echo
}

fw () {
        OFS=${IFS}
        IFS=$'\n'
        CNT=$(echo `w | wc -l`-1 | bc)

        w | tail -n ${CNT} | while read -r a;
        do
                echo -e "\t${a}"
        done

        IFS=${OFS}
}

siusers() {
        echo "=================== Users ======================================"
        echo -e "* Active users: \t\t`who | wc -l`"
        echo "* User information"
        fw
        echo
}

fpstree() {
        OFS=${IFS}
        IFS=$'\n'
        pstree | while read -r a;
        do
                echo -e "\t${a}"
        done
        IFS=${OFS}
}

fcomms() {
        ps -eo comm | sort | uniq | grep -v ^COMMAND | column
        echo

        IFS=${OFS}
}

fprocs() {
        echo `TERM=Linux top -n1 -b | grep "Tasks" | awk '{print $4,$6,$8,$10}'`
        echo -e "==================================Tasks process and memory utilization=============================\n"
    echo "`top -n1 -b`"
}


sitasks() {
        echo "=================== Tasks ======================================"
        echo -e "* Number of running tasks: \t$(echo `ps ax | wc -l` - 1 | bc)"
        #This screws up the email
        #echo "* PS Tree:"
        #fpstree
        echo "* Running programs:"
        fcomms
        echo -e "* CPU load: \t\t\t`TERM=linux top -n2 -b | grep 'Cpu' | tail -n1 | awk '{print $2+$4+$6}'`%"
        PROCS=`fprocs`
        echo "* Process state:"
        echo -e "\tRunning: \t\t`echo ${PROCS} | awk '{print $1}'`"
        echo -e "\tSleeping: \t\t`echo ${PROCS} | awk '{print $2}'`"
        echo -e "\tZombie: \t\t`echo ${PROCS} | awk '{print $3}'`"
        echo -e "\tStopped: \t\t`echo ${PROCS} | awk '{print $4}'`"
        echo
}

froute() {
        OFS=${IFS}
        IFS=$'\n'

        CNT=$(echo `/sbin/route | wc -l` - 1 | bc)
        /sbin/route | tail -n ${CNT} | while read -r a;
        do
                echo -e "\t${a}"
        done

        IFS=${OFS}
}

sinetwork() {
        echo "=================== Networking ================================"
        echo "* Routing table:"
        froute
        echo
}

simemory() {
        echo "=================== Memory ===================================="
        RAMTOTAL=`echo $(($(cat /proc/meminfo | grep MemTotal | awk '{print $2}')/1024))`
        echo "* Ram:\t\t\t free of ${RAMTOTAL}Mb"
}

sidiskstats() {
        echo "=================== Hard Disc ================================="
        echo "* Disk Information:"
        OFS=${IFS}
        IFS=$'\n'
        df -h | grep -v ^none | while read -r a;
        do
                echo -e "\t${a}"
        done
        IFS=${OFS}
        echo
        echo "* Mounts:"
        OFS=${IFS}
        IFS=$'\n'
        mount | while read -r a;
        do
                echo -e "\t${a}"
        done
        IFS=${OFS}
        echo
}

simd5() {
        if [ ! -e md5sums.lst ];
        then
                return
        fi

        echo "=================== MD5Sum Check =============================="

        OFS=${IFS}
        IFS=$'\n'

        echo "* Checking MD5 Sums"

        cat md5sums.lst | grep "^/" | while read -r a;
        do
                F=`echo ${a} | cut -d':' -f1`
                S=`echo ${a} | cut -d':' -f2`
                S2=`md5sum ${F} | cut -d' ' -f1`
                echo -n -e "\t${F}: \t\t\t\t"
                if [ "${S}" = "${S2}" ];
                then
                        echo "[OK]"
                else
                        echo "[INVALID]"
                fi                        
        done

        IFS=${OFS}
        echo
}


##For finding CPU model, cores and 
cpuinfo() {
    echo "=================== CPU Details for Xen =============================="
    echo -e "CPU Details: \n`cat /proc/cpuinfo | sed -n '1,/^$/p'`"
    echo -e "No of Cores: \n`cat /proc/cpuinfo | grep processor | wc -l`"
    if [ "egrep '(vmx|svm)' /proc/cpuinfo >/dev/null 2>/dev/null" ];
    then
        echo -e "\n===============================================================\nServer supports Full-virtualization"
    else
        echo -e "\n===============================================================\nEither server does not support Full-virtualization or it is turned off in BIOS"
    fi

    if [ "egrep 'pae' /proc/cpuinfo >/dev/null 2>/dev/null" ];
    then
        echo -e "\n===============================================================\nServer supports Para-virtualization"
    else
        echo -e "\n===============================================================\nServer does not support Para-virtualization"
    fi
}

##For disk info
diskinfo() {
        echo "=================== Disk usage =============================="
        echo -e "Disk Usage details: \n`df -h`"
}   
##Distro info
distroinfo() {
        echo "=================== Distro Info =============================="
        echo -e "Distro details: \n`lsb_release -a`"
        echo -e "Kernel details: \n`uname -a`"
}   

##Distro info
deviceinfo() {
        echo "=================== Device Info =============================="
        echo -e "Device details: \n`lspci -v`"
        echo -e "Kernel details: \n`uname -a`"
}   
summary() {
        siheader
        siuptime
        siusers
        sitasks
        sinetwork

        simemory
        sidiskstats
    fprocs
        simd5
    deviceinfo
    cpuinfo
    distroinfo
        echo "==============================================================="
        echo "* Brought to you by Taashee- http://www.taashee.com"
}

summary

Вам потрібно зробити це все в блоці коду, щоб воно не виглядало пошкодженим.
Білл Вайс

Дякую Біллу, вибачте, задайте мені такі запитання, як мені це зробити, дозвольте мені наступного разу, коли я зроблю це, будь ласка, ігноруйте мою англійську
Rajat

-1

Дуже старий допис, але я помітив, що відмінника lshwне вистачає у відповідях.


Ти маєш на увазі, крім того, що згадується у найвищому відповіді?
Марк Бут
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.