歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Unix toolbox注解之Linux系統硬件信息

Unix toolbox注解之Linux系統硬件信息

日期:2017/2/27 15:59:35   编辑:Linux教程

系統

正在運行的內核和系統信息:

# uname -a # 獲取內核版本(和BSD版本)

# lsb_release -a # 顯示任何 LSB發行版版本信息

# cat /etc/SuSE-release#獲取 SuSE 版本

# cat /etc/debian_version #獲取 Debian版本

使用/etc/DISTR-release 其中DISTR(發行代號)= lsb (Ubuntu), redhat, gentoo,mandrake, sun(Solaris), 等等。

注:

# cat /etc/issue #紅帽系列也可以通過issue文件查看

Red HatEnterprise Linux Server release 6.3 (Santiago)

# uptime # 顯示系統開機運行到現在經過的時間

# hostname # 顯示系統主機名

# hostname -i #顯示主機的 IP 地址

注:

hostname -i選項是解析主機名獲取ip地址的,它依賴主機名解析,如果你的主機名是隨便命名的,如kumu.com,那麼你獲得的ip地址可能就是互聯網的IP,而不是你自己本身的,這個選項是有爭議的,一般推薦使用-I選項獲取,如下實例:
# hostname //主機名
kumu.com

#hostname -i
50.56.52.163

#host kumu.com //如上顯示的ip和解析的ip值是相同的
kumu.com has address 50.56.52.163

#hostname -I //不依賴主機名解析,獲取的是真實機器的IP值
192.168.1.20 172.16.20.33 10.1.1.119

man注解:
-i, --ip-address
Display the IP address(es) of the host. Note that this works only if the host name can be resolved.Avoid using this option; use hostname --all-ip-addresses instead.

-I, --all-ip-addresses
Displayall network addresses of the host. This option enumerates all configuredaddresses on all network interfaces. The loopback interface and IPv6link-local addresses are omitted. Contrary to option -i, this option does notdepend on name resolution. Do not make any assumptions about the order of the output.

# man hier #描述文件系統目錄結構

注:

使用man hier會顯示每個系統目錄的注解,非常清晰,很實用

# last reboot #顯示系統最後重啟的歷史記錄

1.1硬件信息

內核檢測到的硬件信息

# dmesg # 檢測到的硬件和啟動的消息
# lsdev # 關於已安裝硬件的信息1
# dd if=/dev/membs=1k skip=768 count=256 2>/dev/null | strings -n 8#讀取 BIOS 信息

注:

關於lsdev經常在Redhat系列中是沒有該軟件包的,可以使用lspci -v和lsscsi其他命令查看

# lsscsi //查看scsi設備

[1:0:0:0] cd/dvd NECVMWar VMware IDE CDR10 1.00 /dev/sr0

[2:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda

# lspci -v //列出pci硬件設備

00:00.0 Host bridge: IntelCorporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)

Subsystem:VMware Virtual Machine Chipset

… …

如果是debian系的可以嘗試安裝apt-get install procinfo

# cat /proc/cpuinfo# CPU訊息

注:

用命令判斷幾個物理CPU,幾個核等:

邏輯CPU個數:
# cat /proc/cpuinfo | grep “processor” | wc -l

物理CPU個數:
# cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l

每個物理CPU中Core的個數:
# cat /proc/cpuinfo | grep “cpu cores” | wc -l

是否為超線程?
如果有兩個邏輯CPU具有相同的”core id”,那麼超線程是打開的。

每個物理CPU中邏輯CPU(可能是core, threads或both)的個數:
# cat /proc/cpuinfo | grep “siblings”

# cat /proc/meminfo#內存信息

# grep MemTotal /proc/meminfo#顯示物理內存大小

# watch -n1 'cat /proc/interrupts'#監控內核處理的所有中斷

# free -m # 顯示已用和空閒的內存信息 (-m為 MB)2

# cat /proc/devices#顯示當前核心配置的設備

# lspci -tv # 顯示 PCI 設備

# lsusb -tv # 顯示 USB 設備

# lshal # 顯示所有設備屬性列表

# dmidecode #顯示從 BIOS中獲取的硬件信息


1.2顯示狀態信息

以下命令有助於找出正在系統中運行著的程序

# top # 顯示和更新使用 cpu 最多的進程

注:

top小技巧,執行top命令之後,可以敲擊如下按鍵,實現不同功能

1(數字1):列出所有的單個CPU負載情況

z:top顯示顏色

P:按CPU占用高低順序列出程序

M:按內存占用高低順序列出程序

x:類似高亮顯示,在z顯示模式下才有效果

如下效果圖:

top顯示Swap利用率,使用top命令後按f鍵,然後按p鍵,回車之後即可看到Swap狀態

d:top默認的刷新時間是3s,使用d鍵可以自定義刷新時間

top類似上下翻頁的方法:

shift < 下翻頁

shift >上翻頁

top默認按cpu占用排序,這也是可以修改,按F(大寫)即可選擇相應排序,之後回車即可

c:顯示進程命令的全路徑與參數

W:將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法

# mpstat 1 # 顯示進程相關的信息

# vmstat 2 # 顯示虛擬內存的狀態信息

# iostat 2 # 顯示 I/O 狀態信息(2 秒 間隙)

# tail -n 500 /var/log/messages # 顯示最新500條內核/系統日志的信息

# tail /var/log/warn # 顯示系統警告信息(看syslog.conf)

1.3用戶

# id # 顯示當前用戶和用戶組的 ID

# last # 列出目前與過去登入系統的用戶相關信息

# who # 顯示目前登入系統的用戶信息

# groupadd admin # 建立新組"admin"和添加新用戶 colin 並加入 admin 用戶組(Linux/Solaris)

# useradd -c "Colin Barschel" -g admin -m colin

# userdel colin # 刪除用戶colin(Linux/Solaris)

使用 nologin 來臨時阻止所有用戶登錄(root除外)。用戶登錄時將會顯示nologin 中的信息。

# echo "Sorry no login now" > /etc/nologin # (Linux)

1.4限制

某些應用程序需要設置可打開最大文件和socket 數量(像代理服務器,數據庫)。默認限制通常很低。

注:

關於ulimit使用可閱讀IBM文檔:通過 ulimit 改善系統性能

筆者之前也寫過有關文件描述符文章介紹:Linux下文件描述符


關於RHEL6中ulimit的nproc限制

ulimit用於限制 shell 啟動進程所占用的資源,支持以下各種類型的限制:所創建的內核文件的大小、進程數據塊的大小、Shell 進程創建文件的大小、內存鎖住的大小、常駐內存集的大小、打開文件描述符的數量、分配堆棧的最大大小、CPU 時間、單個用戶的最大線程數、Shell 進程所能使用的最大虛擬內存。同時,它支持硬資源和軟資源的限制。

作為臨時限制,ulimit可以作用於通過使用其命令登錄的 shell 會話,在會話終止時便結束限制,並不影響於其他 shell 會話。而對於長期的固定限制,ulimit 命令語句又可以被添加到由登錄 shell 讀取的文件中,作用於特定的 shell 用戶。

[root@kumu ~]# ulimit -a //顯示當前所有限制的詳細信息

core file size (blocks, -c) 0

data seg size (kbytes, -d) unlimited

scheduling priority (-e) 0

file size (blocks, -f) unlimited

pending signals (-i) 1829

max locked memory (kbytes, -l) 64

max memory size (kbytes, -m) unlimited

open files (-n) 1024

pipe size (512 bytes, -p) 8

POSIX message queues (bytes, -q) 819200

real-time priority (-r) 0

stack size (kbytes, -s) 10240

cpu time (seconds, -t) unlimited

max user processes (-u) 1024

virtual memory (kbytes, -v) unlimited

file locks (-x) unlimited

shell/腳本

shell的限制是受ulimit支配的。使用ulimit -a 可查看其狀態信息。舉個例子,改變可打開最大文件數從1024 到 10240,可以這麼做:

# ulimit -n 10240 # 這只在shell中有用

ulimit 命令可以使用在腳本中來更改對此腳本的限制。

用戶/進程

登錄用戶和應用程序的限制可以在/etc/security/limits.conf中配置。舉個例子:

# cat /etc/security/limits.conf

* hard nproc 250 # 限制所有用戶進程數

asterisk hard nofile 409600 # 限制應用程序可打開最大文件數

系統級

用sysctl來設置內核限制。要使其永久,可以在/etc/sysctl.conf 中進行配置。

# sysctl -a # 顯示所有系統限制

# sysctl fs.file-max # 顯示系統最大文件打開數

# sysctl fs.file-max=102400 # 更改系統最大文件打開數

# cat /etc/sysctl.conf

fs.file-max=102400 # 在 sysctl.conf 中的永久項

# cat /proc/sys/fs/file-nr # 在使用的文件句柄數

1.5 運行級別

一旦內核加載完成,內核會啟動init 進程,然後運行rc腳本,之後運行所有屬於其運行級別的命令腳本。這些腳本都儲存在/etc/rc.d/rcN.d 中(N代表運行級別),並且都建立著到/etc/init.d子目錄中命令腳本程序的符號鏈接。

默認運行級別配置在 /etc/inittab 中。它通常為3或5:

# grep default: /etc/inittab

id:3:initdefault:

可以使用init 來改變當前運行級別。舉個例子:

# init 5 # 進入運行級別 5

運行級別列表如下:

0 系統停止

1 進入單用戶模式(也可以是 S)

2 沒有 NFS 特性的多用戶模式

3 完全多用戶模式(正常操作模式)

4 未使用

5 類似於級別3,但提供XWindow 系統登錄環境

6 重新啟動系統

使用chkconfig 工具控制程序在一個運行級別啟動和停止。

# chkconfig --list # 列出所有 init 腳本

# chkconfig --list sshd # 查看 sshd 在各個運行級別中的啟動配置

# chkconfig sshd --level 35 on # 對sshd 在級別 3 和 5 下創建啟動項

# chkconfig sshd off # 在所有的運行級別下禁用 sshd

同樣可以使用進程init 進入下列狀態級別。舉個例子: # init 6 為重啟。

0 停止系統並關閉電源 (信號USR2)

1 進入單用戶模式 (信號TERM)

6 重新啟動 (信號INT)

c 阻止進一步登錄 (信號TSTP)

q 重新檢查 ttys(5) 文件 (信號HUP)

1.6 重設root密碼

Linux方法1:

在引導加載器(lilo 或 grub)中,鍵入如下啟選項:

init=/bin/sh

內核會掛載root分區,進程init 會啟動bourne shell而不是rc,然後是運行級別。使用命令passwd設置密碼然後重啟。別忘了需要在單用戶模式下做這些動作。

如果重啟後root分區被掛載為只讀,重新掛在它為讀寫:

# mount -o remount,rw /

# passwd # 或者刪除 root 密碼 (/etc/shadow)

# sync; mount -o remount,ro / # sync 在重新掛在為只讀之前 sync 一下

# reboot

(關於第一種方法筆者會專文介紹)

Linux方法2:

通過livecd或者安裝盤(包括CD、網絡rescue都可以)

Linux方法3:

當然也可以通過單人模式修改

1.7 內核模塊

# lsmod # 列出所有已載入內核的模塊

# modprobe isdn # 載入 isdn 模塊

# insmod isdn # 載入isdn 模塊,和modprobe類似,功能沒有modprobe強大

# rmmod isdn # 移除某個模塊

1.8 編譯內核

# cd /usr/src/linux

# make mrproper # 清除所有東西,包括配置文件

# make oldconfig # 從當前內核配置文件的基礎上創建一個新的配置文件

# make menuconfig # 或者 xconfig (Qt) 或者 gconfig (GTK)

# make # 創建一個已壓縮的內核映像文件

# make modules # 編譯模塊

# make modules_install # 安裝模塊

# make install # 安裝內核

# reboot

對於Redhat如下:

# pwd

/usr/src/kernels/2.6.32-131.0.15.el6.i686

# makemenuconfig

Copyright © Linux教程網 All Rights Reserved