как узнать подробности об оборудовании на машине с linux?

<p>-i.e - как получить полный список аппаратных компонентов <strong>в командной строке</strong> (на машине без оконной системы)</p><p>спасибо.</p>

<p><code>lspci</code> для карт pci, <code>lsusb</code> для usb, <code>lshw</code> работает на дистрибутивах на основе debian, вот список способов получить <a href="http://www.cyberciti.biz/faq/linux-display-information-about-installed-hardware/">другие спецификации оборудования</a> ,</p>

<p>если доступно, <code>dmidecode</code> пригодится. особенно на dell, hp, оборудовании ibm, где они пытаются запрограммировать соответствующую информацию об оборудовании в различные регистры.</p>

<p><code>lspci</code> - отличная утилита для вывода списка оборудования системы. (в любом случае, на шине pci.)</p><p><code>cat /proc/cpuinfo</code> - отображает информацию о процессоре</p><p><code>cat /proc/meminfo</code> - отображает информацию о памяти</p><p><code>dmesg</code> (или <code>cat /var/log/dmesg</code>) содержит некоторую информацию, не обязательно все.</p><p>если у вас есть система redhat/centos, вы можете использовать <code>sosreport</code> для сбора хорошей информации, хотя я не знаю, есть ли в ней вся информация об оборудовании.</p><p>вот несколько хороших мест для начала, чтобы найти информацию, которую вы ищете.</p>

<p>файловая система/proc даст вам информацию, которую вы хотите ... но я не знаю, как вы получите, это одно простое место.</p><p>'cat/proc/cpuinfo' расскажет вам о вашем процессоре 'cat/proc/devices' расскажет вам некоторую ограниченную информацию о блочных устройствах. ifconfig -a расскажет вам о сетевых подключениях</p><p>другие смогут рассказать вам о большем количестве устройств. вы устраняете неисправность определенного устройства? если это так, вы получите лучшую помощь, задавая конкретный вопрос.</p>

<p>inxi покажет практически все, запустите без аргументов для краткой формы, однако вариантов много, запустите inxi -h, чтобы увидеть их</p><p><code>inxi</code> - это "полнофункциональный информационный скрипт", как описано на домашней странице проекта: <a href="https://github.com/smxi/inxi">https://github.com/smxi/inxi</a> </p><p>вот информация о том, как вы можете установить его в ubuntu: <a href="https://askubuntu.com/questions/284635/inxi-installation-on-ubuntu">https://askubuntu.com/questions/284635/inxi-installation-on-ubunt</a> </p>

<p>подводя итог, я бы сказал, что это хорошее начало для получения информации о вашей системе:</p><ol> <li>dmesg - печатает или контролирует кольцевой буфер ядра</li> <li>lspci - список всех устройств pci</li> <li>lsusb - список usb-устройств</li> <li>/ proc - обрабатывать информацию псевдофайловой системой</li> </ol>

<p>я рекомендую проверить facter, который выводит много информации в форме, которую легко использовать в скриптах.</p><p> <a href="http://www.puppetlabs.com/puppet/related-projects/facter/">http://www.puppetlabs.com/puppet/related-projects/facter/</a> </p>

<p>мне действительно нравится использовать " <a href="http://www.howtoforge.com/get-ubuntu-system-facts-with-facter">facter</a> ". дает хороший список очень полезной информации.</p>

<p>код ниже вы можете скопировать с помощью vi</p><pre><code>#!/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: tttfuptime" if [ -x /usr/bin/uprecords ]; then echo -e " high score: tttuprecords | tail -n1 | cut -d'|' -f1 | cut -d'n' -f3 | sed 's/^[[:blank:]]//'" fi echo -e " load average: ttcat /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: ttwho | 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: tttterm=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:ttt 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: ncat /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 </code></pre>

<p>для жестких дисков я использую пользовательский скрипт, который объединяет в один список вывод:</p><pre><code>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 </code></pre>

<pre><code># tree -d /sys/devices </code></pre>

<p>проще всего набрать в командной строке "<strong>dmesg | more</strong>", что позволяет увидеть все выходные данные загрузки, которые происходят во время последнего запуска системы.</p>