Linux的/proc虛擬檔案系統

來源:互聯網
上載者:User

Linux的/proc虛擬檔案系統 Linux系統上的/proc目錄是一種檔案系統,即proc檔案系統。與其它常見的檔案系統不同的是,/proc是一種偽檔案系統(也即虛擬檔案系統),儲存的是當前核心運行狀態的一系列特殊檔案,使用者可以通過這些檔案查看有關係統硬體及當前正在運行進程的資訊,甚至可以通過更改其中某些檔案來改變核心的運行狀態。 基於/proc檔案系統如上所述的特殊性,其內的檔案也常被稱作虛擬檔案,並具有一些獨特的特點。例如,其中有些檔案雖然使用查看命令查看時會返回大量資訊,但檔案本身的大小卻會顯示為0位元組。此外,這些特殊檔案中大多數檔案的時間及日期屬性通常為當前系統時間和日期,這跟它們隨時會被重新整理(儲存於RAM中)有關。 為了查看及使用上的方便,這些檔案通常會按照相關性進行分類儲存於不同的目錄甚至子目錄中,如/proc/scsi目錄中儲存的就是當前系統上所有SCSI裝置的相關資訊,/proc/N中儲存的則是系統當前正在啟動並執行進程的相關資訊,其中N為正在啟動並執行進程(可以想象得到,在某進程結束後其相關目錄則會消失)。 大多數虛擬檔案可以使用檔案查看命令如cat、more或者less進行查看,有些檔案資訊表述的內容可以一目瞭然,但也有檔案的資訊卻不怎麼具有可讀性。不過,這些可讀性較差的檔案在使用一些命令如apm、free、lspci或top查看時卻可以有著不錯的表現。 一、進程資訊 在/proc檔案系統中,每一個進程都有一個相應的檔案 。下面是/proc目錄下的一些重要檔案 : /proc/pid/cmdline 包含了用於開始進程的命令 ; /proc/pid/cwd包含了當前進程工作目錄的一個連結 ; /proc/pid/environ 包含了可用進程環境變數的列表 ; /proc/pid/exe 包含了正在進程中啟動並執行程式連結; /proc/pid/fd/ 這個目錄包含了進程開啟的每一個檔案的連結; /proc/pid/mem 包含了進程在記憶體中的內容; /proc/pid/stat包含了進程的狀態資訊;/proc/pid/statm 包含了進程的記憶體使用量資訊。下面是一些擷取進程資訊的例子:/proc/pid/fd/ 目錄提供 了有關開啟檔案的資訊。要查看被進程使用的輸入檔案,使用以下命令 : ls –l /proc/pid/fd/0查看被進程使用socket,使用以下命令 : ls –l /proc/pid/fd|sed –n `/socket/{s/.*\[//;s/\]//p}`有關這些socket的資訊可以使用以下命令擷取 : netstat --ae要將命令列參數傳遞給任意進程,使用以下命令 : cat /proc/pid/cmdline要 擷取某一進程父進程的ID號,使用以下命令: grep PPid/proc/pid/status二、普通的系統資訊Proc包含了很多系統資訊,這其中包括CPU負載、檔案系統和網路設定 。下面是一些通過Proc查看和更改系統的例子: 擷取可用系統記憶體的空間 : grep  Free /proc/meminfo自從系統最後一次啟動後的系統統計可以從/proc/stat檔案中擷取 : grep processes /proc/stat獲知第 1、5和15分鐘系統負載的平均值 : awk `{print “1 min:\t” $1 “\n5 min:\t” $2 “\n15 min:\t” $3` /proc/loadavg/proc/partitions可用於擷取系統的分區資訊 。 /proc/net和/proc/sys/net可用於查看和更改重要的網路資訊。比如,禁用ping命令,可以以 root身份運行以下命令 : echo 1>/proc/sys/net/ipv4/icmp_echo_ignore_all如果要啟用IP轉寄/IP偽裝,使用以下命令 : echo 1> /proc/sys/net/ipv4/ip_forward已經掛載的檔案系統資訊可以從/proc/mounts中檢索。 要改變正在使用的主機名稱 ,使用以下命令: echo www.abc.corn >/proc/sys/kernel/hostname要擷取CPU資訊,使用以下命令 : cat /proc/cpuinfo要獲知swap空間的使用方式 ,使用以下命令: cat /proc/swaps擷取系統的正常已耗用時間: cat /proc/uptime列出由NFS共用的檔案系統: cat /proc/fs/nfsd/exports三、相關核心的資訊 從正在啟動並執行核心中獲知核心的版本: cat /proc/version/proc/kmsg檔案被作為核心日誌資訊源,它可以被作為一個系統資訊調用的介面使用。 /proc/kcore檔案提供了以核心檔案格式形式訪問系統實體記憶體,並且可以被gdb用於檢查任意核心資料結構的目前狀態。如果裝了源碼,那麼可以通過查看/usr/src/linux/Documentation/filesystems/proc.txt檔案來擷取更多的資訊 。 從中可以看出來,Proc是一個非常不錯的擷取系統資訊渠道。如果利用得好,則它對Linux系統的維護和管理能提供非常大的協助。 四、一個簡單的用來排查CPU佔用過高的應用程式的例子: 執行top  比如,第一行的mysqld,我要查看他的執行檔案和開啟了哪些檔案,可以看到對應的PID為29792 執行 ls -l /proc/29792  圖中藍色cwd表示該應用所在的路徑,藍色exe表示該執行檔案名稱與位置,藍色fd目錄內列出該應用開啟了哪些檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.