Làm thế nào để tìm hiểu chi tiết về phần cứng trên máy Linux?


40

-ie - cách nhận danh sách đầy đủ các thành phần phần cứng trong dòng lệnh (trên máy không có hệ thống cửa sổ)

Cảm ơn bạn.

Câu trả lời:


41

lspciđối với thẻ pci, lsusbcho usb, lshwhoạt động trên các distro dựa trên debian, đây là danh sách các cách để có được thông số kỹ thuật phần cứng khác ,


Cảm ơn các liên kết. Tôi thừa nhận rằng tôi có thể đã googled nó, nhưng google là một người đàn ông lộn xộn.
Evgeny

37

Nếu có sẵn, dmidecodecó ích. Riêng trên phần cứng Dell, HP, IBM, nơi họ bận tâm lập trình thông tin phần cứng có liên quan vào các thanh ghi khác nhau.


7
dmidecode là tốt đẹp. Một ngày nọ khi tôi đang sử dụng nó để xem chi tiết bộ nhớ, tôi nhận ra rằng bạn cũng có thể tìm ra thẻ dịch vụ Dell: dmidecode | grep -i nối tiếp | egrep -o '[0-9A-Z] {7} $' | đầu -n1
Kyle Brandt

1
Đồng ý, bạn có thể chạy dmidecode và chỉ grep cho thông tin bạn muốn.
barfoon

1
Cũng hoạt động tuyệt vời trên phần cứng của apple.
Matt3o12

30

lspcilà một tiện ích tuyệt vời để liệt kê phần cứng hệ thống. (Mọi thứ trên bus PCI, dù sao đi nữa.)

cat /proc/cpuinfo - Hiển thị thông tin CPU

cat /proc/meminfo - Hiển thị thông tin bộ nhớ

dmesg(hoặc cat /var/log/dmesg) chứa một số thông tin, không nhất thiết là tất cả mọi thứ.

Nếu bạn có hệ thống RedHat / CentOS, bạn có thể sử dụng sosreportđể thu thập một chút thông tin, mặc dù tôi không biết liệu nó có tất cả thông tin phần cứng được liệt kê trong đó không.

Đó là một số nơi tốt để bắt đầu tìm thông tin bạn đang tìm kiếm.


3

Hệ thống tập tin / Proc sẽ cung cấp cho bạn thông tin mà bạn muốn ... NHƯNG tôi không biết làm thế nào bạn sẽ có được nó là một nơi dễ dàng.

'Cat / Proc / cpuinfo' sẽ cho bạn biết về CPU 'cat / Proc / thiết bị' của CPU sẽ cho bạn biết một số thông tin hạn chế về các thiết bị khối. 'ifconfig -a' sẽ cho bạn biết về kết nối mạng

Những người khác sẽ có thể cho bạn biết về nhiều thiết bị hơn. Bạn đang xử lý sự cố một thiết bị cụ thể? Nếu vậy, bạn sẽ nhận được trợ giúp tốt hơn để hỏi một câu hỏi cụ thể.


cảm ơn không, tôi đang cố gắng chuyển từ máy chủ này sang máy chủ khác và muốn xem sự khác biệt về phần cứng nói chung - để xem liệu tôi có thể di chuyển bằng cách chụp ảnh lại không.
Evgeny

1
Miễn là các phần ban đầu của công việc khởi động, hầu hết các bản phân phối sẽ chỉ phát hiện các thay đổi phần cứng và điều chỉnh. Nếu bạn gặp vấn đề với phần khởi động, hãy cài đặt cùng bản phân phối khi bạn chuyển sang phần cứng mới, cập nhật nó vào cùng kernel khi bạn di chuyển và sau đó sao chép tệp mkintrd vào hệ thống tệp hình ảnh và điều đó sẽ giải quyết vấn đề khởi động của bạn . Nếu nó thực sự sai, bạn vẫn có tất cả dữ liệu của mình trên máy cũ.
Michael Shaw

Nếu bạn đã có Linux trên máy thứ hai và nó đang hoạt động, giả sử Kernel là bản dựng chung và gần đây, nó sẽ tải tất cả các mô-đun (mô-đun tương tự như Trình điều khiển Windows) mà nó cần. Cài đặt Linux không thực sự là phần cứng cụ thể theo cách đó.
Kyle Brandt

Tệp /boot/initrd-2.6.*.img không hoàn toàn chung chung như vậy. Nó được sử dụng bởi kernel khi nó được điều khiển bởi grub. Nó cần phải có tất cả các cài đặt và mô-đun để tải hệ thống tập tin gốc của bạn. Tập tin này được tạo theo cách chung là chạy mkinitrd, tuy nhiên bạn cần phải khởi động hệ thống trước ...
Michael Shaw

2

inxi sẽ hiển thị gần như mọi thứ, chạy không có đối số cho dạng ngắn, tuy nhiên các tùy chọn rất nhiều, chạy inxi -h để xem chúng

inxilà một 'tập lệnh thông tin đầy đủ tính năng' như được mô tả bởi trang chủ của dự án: https://github.com/smxi/inxi

Dưới đây là thông tin về cách bạn có thể cài đặt nó trên Ubuntu: https://askubfox.com/questions/284635/inxi-installation-on-ubfox


Inxi là một công cụ tương đối mới và không phải là một công cụ bạn sẽ tìm thấy trên hầu hết các bản phân phối. Bạn nên thêm một số thông tin và liên kết.
itbruce

1

để tóm tắt điều đó, tôi muốn nói ở đây là khởi đầu tốt để có được thông tin về hệ thống của bạn:

  1. dmesg - in hoặc điều khiển bộ đệm vòng kernel
  2. lspci - liệt kê tất cả các thiết bị PCI
  3. lsusb - liệt kê các thiết bị USB
  4. / Proc - xử lý thông tin hệ thống tập tin giả


1

Tôi thực sự thích sử dụng " Facter ". Cung cấp một danh sách tốt đẹp của thông tin rất hữu ích.



0

Cách dễ nhất là gõ " dmesg | more " trên dòng lệnh, cho phép bạn xem tất cả đầu ra khởi động xảy ra trong lần khởi động hệ thống cuối cùng.


0

Đối với đĩa cứng, tôi sử dụng tập lệnh tùy chỉnh mát xa vào một danh sách các đầu ra của:

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

bên dưới mã bạn có thể sao chép bằng 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

Bạn cần làm cho tất cả trong một khối mã để nó trông không bị hỏng.
Bill Weiss

Cảm ơn Bill xin lỗi hỏi bạn những câu hỏi như vậy làm thế nào để làm điều đó. Làm ơn hãy để tôi lần sau tôi sẽ làm điều đó. Làm ơn bỏ qua tiếng Anh của tôi
Rajat

-1

Một bài viết rất cũ, nhưng tôi nhận thấy rằng sự xuất sắc lshwbị thiếu trong các câu trả lời.


Bạn có nghĩa là ngoài việc được đề cập trong câu trả lời bình chọn cao nhất?
Đánh dấu gian hàng
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.