ค้นหารายละเอียดเกี่ยวกับฮาร์ดแวร์บนเครื่อง Linux ได้อย่างไร


40

-ie - วิธีรับรายการส่วนประกอบฮาร์ดแวร์ทั้งหมดในบรรทัดคำสั่ง (บนเครื่องที่ไม่มีระบบหน้าต่าง)

ขอขอบคุณ.

คำตอบ:



37

ถ้าเป็นไปได้dmidecodeจะมีประโยชน์ โดยเฉพาะอย่างยิ่งเกี่ยวกับ Dell, HP, ฮาร์ดแวร์ IBM ซึ่งพวกเขาต้องการที่จะเขียนโปรแกรมข้อมูลฮาร์ดแวร์ที่เกี่ยวข้องลงในทะเบียนต่างๆ


7
dmidecode นั้นดี วันหนึ่งเมื่อฉันใช้มันเพื่อดูรายละเอียดหน่วยความจำฉันรู้ว่าคุณสามารถหาแท็กบริการของ Dell ได้เช่นกัน: dmidecode | grep -i serial | egrep -o '[0-9A-Z] {7} $' | head -n1
Kyle Brandt

1
ตกลงคุณสามารถเรียกใช้ dmidecode และเพียง grep สำหรับข้อมูลที่คุณต้องการ
barfoon

1
ใช้งานได้ดีกับฮาร์ดแวร์ของ Apple
Matt3o12

30

lspciเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการแสดงรายการฮาร์ดแวร์ของระบบ (อะไรก็ได้บนบัส PCI)

cat /proc/cpuinfo - แสดงข้อมูล CPU

cat /proc/meminfo - แสดงข้อมูลหน่วยความจำ

dmesg(หรือcat /var/log/dmesg) มีข้อมูลบางอย่างไม่จำเป็นต้องทุกอย่าง

หากคุณมีระบบ RedHat / CentOS คุณสามารถใช้sosreportเพื่อรวบรวมข้อมูลที่ดี แต่ฉันไม่รู้ว่ามีข้อมูลฮาร์ดแวร์ทั้งหมดที่ระบุไว้ในนั้นหรือไม่

นี่เป็นสถานที่ที่ดีในการเริ่มค้นหาข้อมูลที่คุณกำลังมองหา


3

ระบบไฟล์ / proc จะให้ข้อมูลที่คุณต้องการ ... แต่ฉันไม่รู้ว่าคุณจะได้รับมันเป็นที่เดียว

'cat / proc / cpuinfo' จะบอกคุณเกี่ยวกับ CPU ของคุณ 'cat / proc / อุปกรณ์' จะบอกข้อมูลที่ จำกัด เกี่ยวกับอุปกรณ์บล็อก 'ifconfig -a' จะบอกคุณเกี่ยวกับการเชื่อมต่อเครือข่าย

คนอื่นจะสามารถบอกคุณเกี่ยวกับอุปกรณ์เพิ่มเติม คุณกำลังแก้ไขปัญหาอุปกรณ์เฉพาะหรือไม่ ถ้าเป็นเช่นนั้นคุณจะได้รับความช่วยเหลือที่ดีขึ้นในการถามคำถามเฉพาะ


ขอบคุณไม่ฉันกำลังพยายามย้ายจากโฮสต์ไปยังโฮสต์และต้องการดูว่าอะไรคือความแตกต่างของฮาร์ดแวร์โดยทั่วไป - เพื่อดูว่าฉันสามารถย้ายด้วยการถ่ายภาพซ้ำได้หรือไม่
Evgeny

1
ตราบใดที่ส่วนเริ่มต้นของบูตทำงานการกระจายส่วนใหญ่จะตรวจจับการเปลี่ยนแปลงของฮาร์ดแวร์และปรับตัว หากคุณมีปัญหากับส่วนการบูตให้ติดตั้งการกระจายแบบเดียวกับที่คุณกำลังย้ายไปยังฮาร์ดแวร์ใหม่อัปเดตเป็นเคอร์เนลเดียวกับที่คุณกำลังย้ายแล้วคัดลอกไฟล์ mkintrd ไปยังระบบไฟล์ภาพและควรแก้ปัญหาการบูตของคุณ . ถ้ามันผิดพลาดจริง ๆ คุณยังคงมีข้อมูลทั้งหมดของคุณในเครื่องเก่า
Michael Shaw

หากคุณมี Linux บนเครื่องตัวที่สองและมันใช้งานได้สมมติว่า Kernel เป็น build ทั่วไปและเพิ่งจะโหลดโมดูลทั้งหมด (โมดูลนั้นคล้ายกับ Windows Drivers) ที่มันต้องการ การติดตั้งลีนุกซ์ไม่ใช่ฮาร์ดแวร์ที่เจาะจงจริงๆ
Kyle Brandt

ไฟล์ /boot/initrd-2.6.*.img นั้นค่อนข้างไม่ธรรมดานัก มันถูกใช้โดยเคอร์เนลเมื่อผ่านการควบคุมโดยด้วง จำเป็นต้องมีการตั้งค่าและโมดูลทั้งหมดเพื่อโหลดระบบไฟล์รูทของคุณ ไฟล์นี้จะทำในทางทั่วไปจะทำงาน mkinitrd แต่คุณจำเป็นต้องมีการบูตระบบแรก ...
ไมเคิลชอว์

2

inxi จะแสดงทุกอย่างให้ทำงานโดยไม่มีข้อโต้แย้งสำหรับรูปแบบสั้น ๆ ตัวเลือกมีมากมาย แต่ให้เรียกใช้ inxi -h เพื่อดู

inxiคือ 'สคริปต์ข้อมูลที่มีคุณสมบัติครบถ้วน' ตามที่อธิบายไว้ในหน้าแรกของโครงการ: https://github.com/smxi/inxi

นี่คือข้อมูลเกี่ยวกับวิธีติดตั้งบน Ubuntu: https://askubuntu.com/questions/284635/inxi-installation-on-ubuntu


Inxi เป็นเครื่องมือที่ค่อนข้างใหม่และไม่ใช่สิ่งที่คุณจะพบในการแจกแจงส่วนใหญ่ คุณควรเพิ่มข้อมูลและลิงค์เพิ่มเติม
itsbruce

1

เพื่อสรุปว่าฉันจะบอกว่าที่นี่เป็นการเริ่มต้นที่ดีในการรับข้อมูลเกี่ยวกับระบบของคุณ:

  1. dmesg - พิมพ์หรือควบคุมบัฟเฟอร์วงแหวนเคอร์เนล
  2. lspci - แสดงรายการอุปกรณ์ PCI ทั้งหมด
  3. lsusb - แสดงรายการอุปกรณ์ USB
  4. / proc - ประมวลผลข้อมูลระบบไฟล์หลอก




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

โค้ดด้านล่างคุณสามารถคัดลอกได้โดยใช้ 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

คุณต้องทำให้ทั้งหมดในบล็อกรหัสเพื่อให้มันดูไม่เสียหาย
Bill Weiss

ขอบคุณบิลขอโทษถามยูคำถามเช่นฉันจะทำอย่างนั้นกรุณาแจ้งให้เราในครั้งต่อไปผมจะทำมัน pls ไม่สนใจภาษาอังกฤษ
Rajat

-1

โพสต์เก่ามาก แต่ฉันสังเกตเห็นว่ายอดเยี่ยมlshwหายไปจากคำตอบ


คุณหมายถึงนอกเหนือจากการถูกกล่าวถึงในคำตอบโหวตสูงสุด?
Mark Booth
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.