Как узнать детали об аппаратных средствах на машине Linux?

Linux собирается использовать Вашу освобожденную RAM в качестве кэша по умолчанию..., но Ваш сценарий сразу поднимает два вопроса в моем уме:

  • Сеть, вероятно, будет узким местом
  • Что происходит с Вашим кэшем когда перезагрузки сервера? неожиданный? как посвящают себя диску записей?

Вы могли, конечно, установить ramfs, чтобы быть доступными по сети, но действительно, несомненно, необходимо будет сбросить его к более постоянному хранению также. Если Ваш набор данных только для чтения (или просто случайные записи даже), то это могло бы работать прекрасное. Но для пользовательских данных или общих долей файла - yikes!

Я не знаю то, на что похожа Ваша определенная среда, но Вы могли бы быть очень более обеспеченной виртуализацией, что сервер, если это имеет избыточную мощность. Другая земля игры/доказательства/теста обычно довольно приветствуется.

41
задан 31 July 2009 в 21:24
13 ответов

lspci для плат PCI, lsusb для usb, lshw работы над debian основывали дистрибутивы, вот список способов получить другие аппаратные спецификации,

41
ответ дан 28 November 2019 в 19:43
  • 1
    спасибо за ссылку. Я признаю, что, возможно, погуглил его, но Google является человеком путаницы. –  Evgeny 31 July 2009 в 21:28

При наличии, dmidecode пригождается. Особенно на Dell, HP, аппаратном обеспечении IBM, где они потрудились программировать информацию о соответствующей аппаратной в различные регистры.

37
ответ дан 28 November 2019 в 19:43
  • 1
    dmidecode хорош. Однажды, когда я использовал его для рассмотрения деталей памяти, я понял, что Вы могли узнать метку Dell также: dmidecode | grep-i последовательный | egrep-o ' $ [0-9A-Z] {7} ' | возглавляют-n1 –  Kyle Brandt 31 July 2009 в 21:30
  • 2
    Согласованный, можно выполнить dmidecode и просто grep для получения информации, которую Вы хотите. –  barfoon 20 August 2009 в 22:02

lspci большая утилита для списка оборудования системы. (Что-либо на шине PCI, так или иначе.)

cat /proc/cpuinfo - Дисплеи информация о ЦП

cat /proc/meminfo - Информация о памяти дисплеев

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

Если у Вас есть система RedHat/CentOS, можно использовать sosreport собрать хороший бит информации, хотя я не знаю, имеет ли она всю информацию об аппаратных средствах, перечислило в ней.

Это - некоторые хорошие места, чтобы начать находить информацию, которую Вы ищете.

30
ответ дан 28 November 2019 в 19:43

/proc файловая система даст Вам информацию, которую Вы хотите... НО я не знаю, как Вы доберетесь, это - одно легкое место.

'кошка/proc/cpuinfo' скажет, что Вы о Вашем ЦП '/proc/devices' кошки скажете Вам некоторую ограниченную информацию о блочных устройствах. 'ifconfig-a' скажет Вам о сетевых соединениях

Другие смогут сказать Вам о большем количестве устройств. Вы диагностируете конкретное устройство? Если так, Вы получите лучшую справку, задавая конкретный вопрос.

3
ответ дан 28 November 2019 в 19:43
  • 1
    спасибо не, I' m пытающийся переместить от хоста до хоста и хотел бы видеть то, что является различием в аппаратных средствах в целом - чтобы видеть, могу ли я переместиться путем переобработки изображений. –  Evgeny 31 July 2009 в 21:26
  • 2
    Пока начальные части работы начальной загрузки, большинство дистрибутивов просто обнаружит изменения аппаратной конфигурации и адаптируется. Если Вы имеете проблемы с частью начальной загрузки, устанавливаете то же распределение, как Вы переходите на новые аппаратные средства, обновляете их к тому же ядру, как Вы перемещаете и затем копируете mkintrd файл на систему файла изображения, и это должно решить Ваши проблемы загрузки. Если это действительно идет не так, как надо, у Вас все еще есть все свои данные по старой машине. –  Michael Shaw 31 July 2009 в 21:45
  • 3
    Если у Вас уже будет Linux на второй машине, и это работает, предполагая, что Ядро является универсальной сборкой и столь же недавний, то это загрузит все модули (модули походят на довольно Windows Drivers), этому нужно. Установки Linux не являются действительно аппаратными средствами, конкретными таким образом. –  Kyle Brandt 31 July 2009 в 21:55
  • 4
    /boot/initrd-2.6. файл *.img не совсем таким образом универсален. Это используется ядром когда его переданное управление личинкой. Это должно иметь все настройки и модули для загрузки корневой файловой системы. Этот файл сделан универсальным способом выполнить mkinitrd, однако необходимо загрузить систему сначала... –  Michael Shaw 1 August 2009 в 00:53

ниже кода можно скопировать использование 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
1
ответ дан 28 November 2019 в 19:43
  • 1
    Необходимо сделать это все в блоке кода так это doesn' t выглядят поврежденными. –  Bill Weiss 21 August 2009 в 00:32
  • 2
    Спасибо тарифицирует, извините задают u такие вопросы, как делают я делаю это, позвольте мне в следующий раз i' ll делают это, проигнорируйте мой английский язык –  Rajat 21 August 2009 в 07:30
# tree -d /sys/devices
0
ответ дан 28 November 2019 в 19:43

Самая легкая вещь состоит в том, чтобы ввести "dmesg | больше" на командной строке, которая позволяет Вам видеть весь вывод начальной загрузки, который происходит во время последнего системного запуска.

0
ответ дан 28 November 2019 в 19:43

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

inxi - это полнофункциональный информационный скрипт », как описано на домашней странице проекта: https://github.com/smxi/inxi

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

2
ответ дан 28 November 2019 в 19:43

Подводя итог, я бы сказал, что это хорошее начало для получения информации о вашей системе:

  1. dmesg - печать или управление кольцевым буфером ядра
  2. lspci - список всех устройств PCI
  3. lsusb - список USB-устройств
  4. / proc - псевдофайловая система информации о процессе
1
ответ дан 28 November 2019 в 19:43

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

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
ответ дан 28 November 2019 в 19:43

Мне очень нравится использовать " Facter ". Дает хороший список очень полезной информации.

1
ответ дан 28 November 2019 в 19:43

Я рекомендую попробовать facter, который выводит много информации в форме, удобной для использования в скриптах.

http://www.puppetlabs.com/puppet/related-projects / facter /

1
ответ дан 28 November 2019 в 19:43

Очень старый пост, но я заметил, что в ответах отсутствует отличный lshw .

-1
ответ дан 28 November 2019 в 19:43

Теги

Похожие вопросы