Linux下如何查看系統啟動時間和已耗用時間
1.查看/proc/uptime檔案計算系統啟動時間:
cat /proc/uptime
輸出: 5113396.94 575949.85
第一數字即是系統已啟動並執行時間5113396.94秒,運用系統工具date即可算出系統啟動時間
date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
輸出: 2018-01-02 06:50:52
2.查看/proc/uptime檔案計算系統已耗用時間
cat /proc/uptime| awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("系統已運行:%d天%d時%d分%d秒",run_days,run_hour,run_minute,run_second)}'
輸出:系統已運行:1天1時36分13秒
Linux查看物理CPU個數、核心數、邏輯CPU個數
# 總核心數 = 物理CPU個數 X 每顆物理CPU的核心數
# 總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核心數 X 超執行緒數
# 查看物理CPU個數
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
2
# 查看每個物理CPU中core的個數(即核心數)
cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores : 2
# 查看邏輯CPU的個數
cat /proc/cpuinfo| grep "processor"| wc -l
4
# 查看CPU資訊(型號)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
4 Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
輸入命令cat /proc/cpuinfo 查看physical id有幾個就有幾個物理cpu;查看processor有幾個就有幾個邏輯cpu。
(一)概念
① 物理CPU
實際Server中插槽上的CPU個數
物理cpu數量,可以數不重複的physical id有幾個
② 邏輯CPU
/proc/cpuinfo用來儲存cpu硬體資訊的
資訊內容分別列出了processor 0 –processor n 的規格。這裡需要注意,n+1是邏輯cpu數
一般情況,我們認為一顆cpu可以有多核,加上intel的超執行緒技術(HT), 可以在邏輯上再分一倍數量的cpu core出來
邏輯CPU數量=物理cpu數量 x cpu cores 這個規格值 x 2(如果支援並開啟ht)
備忘一下:Linux下top查看的CPU也是邏輯CPU個數
③ CPU核心數
一塊CPU上面能處理資料的晶片集的數量、比如現在的i5 760,是雙核心四線程的CPU、而 i5 2250 是四核心四線程的CPU
一般來說,物理CPU個數×每顆核心數就應該等於邏輯CPU的個數,如果不相等的話,則表示伺服器的CPU支援超執行緒技術
查看系統資訊的實用命令
lscpu命令,查看的是cpu的統計資訊
blue@blue-pc:~$ lscpuArchitecture: i686 #cpu架構CPU op-mode(s): 32-bit, 64-bitByte Order: Little Endian #小端位元組序CPU(s): 4 #總共有4核On-line CPU(s) list: 0-3Thread(s) per core: 1 #每個cpu核,只能支援一個線程,即不支援超執行緒Core(s) per socket: 4 #每個cpu,有4個核Socket(s): 1 #總共有1一個cpuVendor ID: GenuineIntel #cpu產商 intelCPU family: 6Model: 42Stepping: 7CPU MHz: 1600.000BogoMIPS: 5986.12Virtualization: VT-x #支援cpu虛擬化技術L1d cache: 32KL1i cache: 32KL2 cache: 256KL3 cache: 6144K
查看/proc/cpuinfo,可以知道每個cpu資訊,如每個CPU的型號,主頻等。
記憶體
概要查看記憶體情況
free -m total used free shared buffers cachedMem: 3926 3651 274 0 12 404-/+ buffers/cache: 3235 691Swap: 9536 31 9505
這裡的單位是MB,總共的記憶體是3926MB。
查看記憶體詳細使用:cat /proc/meminfo
磁碟
查看硬碟和分區分布
# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 1G 0 part /boot├─sda2 8:2 0 9.3G 0 part [SWAP]├─sda3 8:3 0 74.5G 0 part /├─sda4 8:4 0 1K 0 part ├─sda5 8:5 0 111.8G 0 part /home└─sda6 8:6 0 269.2G 0 part
如果要看硬碟和分區的詳細資料
# fdisk -lDisk /dev/sda: 500.1 GB, 500107862016 bytesheads, 63 sectors/track, 60801 cylinders, total 976773168 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 4096 bytesI/O size (minimum/optimal): 4096 bytes / 4096 bytesDisk identifier: 0x00023728 Device Boot Start End Blocks Id System/dev/sda1 * 2048 2148351 1073152 83 Linux/dev/sda2 2148352 21680127 9765888 82 Linux swap / Solaris/dev/sda3 21680128 177930239 78125056 83 Linux/dev/sda4 177932286 976771071 399419393 5 Extended/dev/sda5 177932288 412305407 117186560 83 Linux/dev/sda6 412307456 976771071 282231808 83 Linux
使用“df -k”命令,以KB為單位顯示磁碟使用量和佔用率,-m則是以M為單位顯示磁碟使用量和佔用率
root@debian:~# df -kFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda1 8518920 1484432 6578708 19% /udev 10240 0 10240 0% /devtmpfs 98488 12908 85580 14% /runtmpfs 246216 0 246216 0% /dev/shmtmpfs 5120 0 5120 0% /run/locktmpfs 246216 0 246216 0% /sys/fs/cgroup/dev/sda7 368615 2055 343008 1% /tmp/dev/sda8 28202140 9678620 17067856 37% /home/dev/sda5 2817056 803380 1850860 31% /var
使用“du -k /home”命令,列出home目錄下所有檔案或目錄佔用的大小,以KB作為計量單位。
以下命令可以查看/home目錄的大小:
root@debian:~# du -sh /home
9.2G /home
網卡
查看網卡硬體資訊
# lspci | grep -i 'eth'
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)
查看系統的所有網路介面
# ifconfig -aeth0 Link encap:乙太網路 硬體地址 b8:97:5a:17:b3:8f .....lo Link encap:本地環回 .....或者是ip link show1: lo: <LOOPBACK> mtu 16436 qdisc noqueue state DOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:002: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether b8:97:5a:17:b3:8f brd ff:ff:ff:ff:ff:ff
如果要查看某個網路介面的詳細資料,例如eth0的詳細參數和指標
# ethtool eth0Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full #支援千兆半雙工,全雙工系統模式 Supported pause frame use: No Supports auto-negotiation: Yes #支援自適應模式,一般都支援 Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised pause frame use: Symmetric Receive-only Advertised auto-negotiation: Yes #預設使用自適應模式 Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full ..... Speed: 100Mb/s #現在網卡的速度是100Mb,網卡使用自適應模式,所以推測路由是100Mb,導致網卡從支援千兆,變成要支援百兆 Duplex: Full #全雙工系統 ..... Link detected: yes #表示有網線串連,和路由是通的
其他
查看pci資訊,即主板所有硬體槽資訊。
lspci00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09) #主板晶片00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09) #顯卡00:14.0 USB controller: Intel Corporation Panther Point USB xHCI Host Controller (rev 04) #usb控制器00:16.0 Communication controller: Intel Corporation Panther Point MEI Controller #1 (rev 04)00:1a.0 USB controller: Intel Corporation Panther Point USB Enhanced Host Controller #2 (rev 04)00:1b.0 Audio device: Intel Corporation Panther Point High Definition Audio Controller (rev 04) #音效卡00:1c.0 PCI bridge: Intel Corporation Panther Point PCI Express Root Port 1 (rev c4) #pci 插槽00:1c.2 PCI bridge: Intel Corporation Panther Point PCI Express Root Port 3 (rev c4)00:1c.3 PCI bridge: Intel Corporation Panther Point PCI Express Root Port 4 (rev c4)00:1d.0 USB controller: Intel Corporation Panther Point USB Enhanced Host Controller #1 (rev 04)00:1f.0 ISA bridge: Intel Corporation Panther Point LPC Controller (rev 04)00:1f.2 IDE interface: Intel Corporation Panther Point 4 port SATA Controller [IDE mode] (rev 04) #硬碟介面00:1f.3 SMBus: Intel Corporation Panther Point SMBus Controller (rev 04)00:1f.5 IDE interface: Intel Corporation Panther Point 2 port SATA Controller [IDE mode] (rev 04) #硬碟介面02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06) #網卡03:00.0 PCI bridge: Integrated Technology Express, Inc. Device 8893 (rev 41)
如果要更詳細的資訊:lspci -v 或者 lspci -vv
如果要看裝置樹:lspci -t
查看bios資訊
# dmidecode -t bios......BIOS Information Vendor: American Megatrends Inc. Version: 4.6.5 Release Date: 04/25/2012 ....... BIOS Revision: 4.6......
dmidecode以一種可讀的方式dump出機器的DMI(Desktop Management Interface)資訊。這些資訊包括了硬體以及BIOS,既可以得到當前的配置,也可以得到系統支援的最大配置,比如說支援的最大記憶體數等。
如果要查看所有有用資訊
dmidecode -q
裡麵包含了很多硬體資訊。
註:以上的命令都是Ubuntu。Ubuntu支援的命令比較多,相對redhat會很齊全。畢竟redhat要求穩定,所以更新會很慢。(有的命令RedHat和Centos可能沒有,我測試Debian也是可以)
Linux /proc目錄詳解
1. /proc目錄
Linux 核心提供了一種通過 /proc 檔案系統,在運行時訪問核心內部資料結構、改變核心設定的機制。proc檔案系統是一個偽檔案系統,它只存在記憶體當中,而不佔用外存空間。它以檔案系統的方式為訪問系統核心資料的操作提供介面。
使用者和應用程式可以通過proc得到系統的資訊,並可以改變核心的某些參數。由於系統的資訊,如進程,是動態改變的,所以使用者或應用程式讀取proc檔案時,proc檔案系統是動態從系統核心讀出所需資訊並提交的。下面列出的這些檔案或子檔案夾,並不是都是在你的系統中存在,這取決於你的核心配置和裝載的模組。另外,在/proc下還有三個很重要的目錄:net,scsi和sys。 Sys目錄是可寫的,可以通過它來訪問或修改核心的參數,而net和scsi則依賴於核心配置。例如,如果系統不支援scsi,則scsi 目錄不存在。
除了以上介紹的這些,還有的是一些以數字命名的目錄,它們是進程目錄。系統中當前啟動並執行每一個進程都有對應的一個目錄在/proc下,以進程的 PID號為目錄名,它們是讀取進程資訊的介面。而self目錄則是讀取進程本身的資訊介面,是一個link。
2. 子檔案或子檔案夾
/proc/buddyinfo 每個記憶體區中的每個order有多少塊可用,和記憶體片段問題有關
/proc/cmdline 啟動時傳遞給kernel的參數資訊
/proc/cpuinfo cpu的資訊
/proc/crypto 核心使用的所有已安裝的加密密碼及細節
/proc/devices 已經載入的裝置並分類
/proc/dma 登入使用的ISA DMA頻道列表
/proc/execdomains Linux核心當前支援的execution domains
/proc/fb 幀緩衝裝置列表,包括數量和控制它的驅動
/proc/filesystems 核心當前支援的檔案系統類型
/proc/interrupts x86架構中的每個IRQ中斷數
/proc/iomem 每個物理裝置當前在系統記憶體中的映射
/proc/ioports 一個裝置的輸入輸出所使用的註冊連接埠範圍
/proc/kcore 代表系統的實體記憶體,儲存為核心檔案格式,裡邊顯示的是位元組數,等於RAM大小加上4kb
/proc/kmsg 記錄核心產生的資訊,可以通過/sbin/klogd或/bin/dmesg來處理
/proc/loadavg 根據過去一段時間內CPU和IO的狀態得出的負載狀態,與uptime命令有關
/proc/locks 核心鎖住的檔案清單
/proc/mdstat 多硬碟,RAID配置資訊(md=multiple disks)
/proc/meminfo RAM使用的相關資訊
/proc/misc 其他的主要裝置(裝置號為10)上註冊的驅動
/proc/modules 所有載入到核心的模組列表
/proc/mounts 系統中使用的所有掛載
/proc/mtrr 系統使用的Memory Type Range Registers (MTRRs)
/proc/partitions 分區中的塊分配資訊
/proc/pci 系統中的PCI裝置列表
/proc/slabinfo 系統中所有活動的 slab 緩衝資訊
/proc/stat 所有的CPU活動資訊
/proc/sysrq-trigger 使用echo命令來寫這個檔案的時候,遠程root使用者可以執行大多數的系統請求關鍵命令,就好像在本地終端執行一樣。要寫入這個檔案,需要把/proc/sys/kernel/sysrq不能設定為0。這個檔案對root也是不可讀的
/proc/uptime 系統已經運行了多久
/proc/swaps 交換空間的使用方式
/proc/version Linux核心版本和gcc版本
/proc/bus 系統匯流排(Bus)資訊,例如pci/usb等
/proc/driver 驅動資訊
/proc/fs 檔案系統資訊
/proc/ide ide裝置資訊
/proc/irq 插斷要求裝置資訊
/proc/net 網卡裝置資訊
/proc/scsi scsi裝置資訊
/proc/tty tty裝置資訊
/proc/net/dev 顯示網路介面卡及統計資訊
/proc/vmstat 虛擬記憶體統計資訊
/proc/vmcore 核心panic時的記憶體映像
/proc/diskstats 取得磁碟資訊
/proc/schedstat kernel調度器的統計資訊
/proc/zoneinfo 顯示記憶體空間的統計資訊,對分析虛擬記憶體行為很有用
以下是/proc目錄中進程N的資訊
/proc/N pid為N的進程資訊
/proc/N/cmdline 進程啟動命令
/proc/N/cwd 連結到進程當前工作目錄
/proc/N/environ 進程環境變數列表
/proc/N/exe 連結到進程的執行命令檔案
/proc/N/fd 包含進程相關的所有的檔案描述符
/proc/N/maps 與進程相關的記憶體映射資訊
/proc/N/mem 指代進程持有的記憶體,不可讀
/proc/N/root 連結到進程的根目錄
/proc/N/stat 進程的狀態
/proc/N/statm 進程使用的記憶體的狀態
/proc/N/status 進程狀態資訊,比stat/statm更具可讀性
/proc/self 連結到當前正在啟動並執行進程
參考:
https://www.cnblogs.com/xd502djj/archive/2011/05/03/2035599.html
https://www.cnblogs.com/emanlee/p/3587571.html
http://blog.csdn.net/chw1989/article/details/9150767
https://www.cnblogs.com/ggjucheng/archive/2013/01/14/2859613.html
https://jingyan.baidu.com/article/e2284b2b5dd3ebe2e6118dc8.html
http://blog.csdn.net/zdwzzu2006/article/details/7747977