文章結構:
1.什麼是proc目錄
2. 初識proc目錄
3. 從proc窺看系統詳情
1.什麼是proc目錄
proc是Linux系統下一個很重要的目錄。 它跟/etc, /home等這些系統目錄不同, 它不是一個真正的文件系統, 而是一個虛擬的文件系統。 它不存在於磁盤, 而是存在於系統內存中。 所以當你使用 ls -al /proc這條命令來查看proc目錄時, 會看到其下面的所有文件的大小都爲0字節。 proc以文件系統的方式爲訪問系統內核的操作提供接口。 很多系統的信息, 如內存使用情況, cpu使用情況, 進程信息等等這些信息,都可以通過查看/proc下的對應文件來獲得。 proc文件系統是動態從系統內核讀出所需信息的。
2. 初識proc目錄
proc目錄下具體有哪些文件呢?
/proc 目錄下的文件
/proc/cpuinifo CPU的信息(型號、家族、緩存大小等)
/proc/meminfo物理內存、交換空間
/proc/mounts 已加載的文件系統的列表
/proc/devices 可用設備的列表
/proc/filesystems 被支持的文件系統
/proc/modules 已加載的模塊
/proc/virsion 內核版本
/proc/cmdline 系統啓動時輸入的內核命令行參數
/proc/XXX XXX是指以進程PID(數字編號)命名的目錄,每一個目錄表示一個進程(即線程組)。
/proc/swaps 要獲知swap空間的使用情況
/proc/uptime 獲取系統的正常運行時間
/proc/fs/nfsd/exports 列出由NFS共享的文件系統
/proc/kmsg 該文件被作爲內核日誌信息源,它可以被作爲一個系統信息調用的接口使用
/proc/self -- 到當前進程/proc目錄的符號鏈接,通過這個目錄可以獲取當前運行進程的信息。
/proc/pci -- 掛接在PCI總線上的設備
/proc/tty/driver/serial --串口配置、統計信息
/proc/version -- 系統版本信息
/proc/sys/kernel/ostype
/proc/sys/kernel/osrelease
/proc/sys/kernel/version
/proc/sys/kernel/hostname -- 主機名
/proc/sys/kernel/domainname -- 域名
/proc/partitions -- 硬盤設備分區信息
/proc/sys/dev/cdrom/info -- CDROM信息
/proc/locks -- 當前系統中所有的文件鎖
/proc/loadavg -- 系統負荷信息
/proc/uptime -- 系統啓動後的運行時間
3. 從proc窺看系統詳情
操作 | 系統命令 | proc對應目錄 |
獲取系統版本信息 | uname -a 或者 lsb_release | /proc/version或者/proc/sys/kernel/hostname[,domainname, osrelease, ostype, version] |
獲取系統負載信息 | top 或者 w 或者 uptime | /proc/loadavg |
獲取內存使用情況 | free | /proc/meminfo |
獲取CPU使用情況 | top | /proc/cpuinfo |
獲取進程運行情況 | ps aux 或者 top | /proc/N[N爲對應的PID號] |
對於查看進程信息一欄,做下補充:
/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 鏈接到當前正在運行的進程
更多的應用場景, 留給大家自己到/proc目錄下探索吧。
轉載請註明來自:作者hackstoic
【參考文獻】
1.
2.
3.
4.
文章首發於:www.hackstoic.com