您好,登錄后才能下訂單哦!
今天小編給大家分享一下linux下proc是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
在linux中,proc是虛擬文件系統,是一個控制中心,可以通過更改其中某些文件改變內核運行狀態;它也是內核提空給我們的查詢中心,用戶可以通過它查看系統硬件及當前運行的進程信息。proc系統只存在內存當中,以文件系統的方式為訪問系統內核數據的操作提供接口,可以通過更改其中的某些文件來改變內核運行狀態。
proc被稱為虛擬文件系統,它是一個控制中心,可以通過更改其中某些文件改變內核運行狀態,它也是內核提空給我們的查詢中心,用戶可以通過它查看系統硬件及當前運行的進程信息。
Linux中許多工具的數據來源正是proc目錄中的內容,比如lsmod的命令是cat /proc/modules的別名。
在Linux中存在著一類特殊的偽文件系統,用于使用與文件接口統一的操作來完成各種功能,例如ptyfs、devfs、sysfs和procfs。而procfs就是其中應用最廣泛的一種偽文件系統。
就文件系統這一術語而言,/ proc目錄并不是真正的文件系統,它是一個虛擬文件系統,有時也被稱為進程信息偽文件系統。
proc 放置的數據都是在內存當中,例如系統內核、進程、外部設備的狀態及網絡狀態等。因為這個目錄下的數據都是在內存當中,所以本身不占任何硬盤空間。
procfs是Linux內核信息的抽象文件接口,大量內核中的信息以及可調參數都被作為常規文件映射到一個目錄樹中,這樣我們就可以簡單直接的通過echo或cat這樣的文件操作命令對系統信息進行查取和調整了。同時procfs也提供了一個接口,使得我們自己的內核模塊或用戶態程序可以通過procfs進行參數的傳遞。在當今的Linux系統中,大量的系統工具也通過procfs獲取內核參數,例如ps、lspci等等,沒有procfs它們將可能不能正常工作。
proc文件系統是一個偽文件系統,它只存在內存當中,而不占用外存空間。它以文件系統的方式為訪問系統內核數據的操作提供接口。用戶和應用程序可以通過proc得到系統的信息,并可以改變內核的某些參數。由于系統的信息,如進程,是動態改變的,所以用戶或應用程序讀取proc文件時,proc文件系統是動態從系統內核讀出所需信息并提交的。
Linux系統上的/proc目錄是一種文件系統,即proc文件系統。與其它常見的文件系統不同的是,/proc是一種偽文件系統(也即虛擬文件系統,它只存在內存當中,而不占用外存空間。它以文件系統的方式為訪問系統內核數據的操作提供接口),存儲的是當前內核運行狀態的一系列特殊文件,用戶可以通過這些文件查看有關系統硬件及當前正在運行進程的信息,甚至可以通過更改其中某些文件來改變內核的運行狀態。
PID
目錄,系統中當前運行的每一個進程都有對應的一個目錄在/proc下,以進程的 PID號為目錄名.
attr
目錄,提供了安全相關的屬性,可讀可寫,以支持安全模塊如SELinux等,需配置CONFIG_SECURITY。
current
文件,當前的安全相關的屬性。
exec
文件,執行命令execve時設置的安全相關的屬性。
fscreate
文件,執行命令open、mkdir、symlink、mknod時設置的安全相關的屬性。
keycreate
文件,執行命令add_key時設置的安全相關的屬性。
prev
文件,最后一次執行命令execve時的安全相關的屬性,即前一個“/proc/[pid]/attr/current”。
sockcreate
文件,創建socket時設置的安全相關的屬性。
autogroup
文件,可以用來修改分配給自動分組的CPU帶寬。這是通過在“nice”范圍內寫入一個數字來設置自動分組的nice值來完成的。取值范圍為+19(低優先級)~ -20(高優先級)。(寫入值超出這個范圍會導致write(2)失敗,錯誤為EINVAL。)
auxv
文件,ELF解釋器信息,格式為一個unsigned long類型的ID加一個unsigned long類型的值,最后為兩個0(man getauxval)。
cgroup
文件,進程所屬的控制組,格式為冒號分隔的三個字段,分別是結構ID、子系統、控制組,需配置CONFIG_CGROUPS。
clear_refs
文件,只寫,只用于進程的擁有者,清除用于估算內存使用量的PG_Referenced和ACCESSED/YOUNG,有1、2、3、4四種策略,1表示清除相關的所有頁,2表示清除相關的匿名頁,3表示清除相關的映射文件的頁,4表示清除相關的soft-dirty的頁,需配置CONFIG_PROC_PAGE_MONITOR。
cmdline
文件,只讀,保存啟動進程的完整的命令行字符串,如果是僵尸進程,這個文件為空。
comm
文件,進程的命令名,不同的線程(man clone prctl pthread_setname_np)可能有不同的線程名,位置在“task/[tid]/comm”,名字長度超過TASK_COMM_LEN時會被截斷。
coredump_filter
文件,coredump過濾器,如00000037(man core),不同的二進制位表示過濾不同的信息。
cpuset
文件,控制CPU和內存的節點(man cpuset)。
cwd -> /
目錄,符號鏈接到當前工作目錄。
environ
文件,環境變量。
exe
文件,符號鏈接到啟動進程的完整命令。q
fd
目錄,包含當前的fd,這些fd符號鏈接到真正打開的文件。
fdinfo
目錄,包含當前fd的信息,不同類型的fd信息不同。
gid_map
文件,從用戶命名空間映射的組ID的信息(man user_namespaces)。
io
文件,IO信息。
limits
文件,資源軟、硬限制(man getrlimit)。
loginuid
文件,審計守護進程在內核中啟用審計工具。在內核中打開審計功能之前運行的任何進程都將獲得 loginuid 4294967295。
4294967295 只是 (unsigned long) -1。-1 表示未設置 loginuid。對于不是由任何登錄進程(例如守護進程)產生的進程,這是正常行為。loginuid 默認為 -1;每當您登錄時(在 tty/在 DM/通過 ssh),pam_loginuid 模塊都會將其更改為您的用戶 ID,并且該值由子進程保留。
map_files
目錄,包括一些內存映射文件(man mmap),文件名格式為BeginAddress-EndAddress,符號鏈接到映射的文件,需要配置CONFIG_CHECKPOINT_RESTORE。
maps
文件,內存映射信息。
mem
文件,用于通過open、read、lseek訪問進程的內存頁。
mountinfo
文件,掛載信息,格式為44 41 253:1 / / rw,relatime shared:35 master:1 - ext4 /dev/vda1 rw,data=ordered,以空格作為分隔符,從左到右各字段的意思分別是唯一掛載ID、父掛載ID、文件系統的設備主從號碼、文件系統中掛載的根節點、相對于進程根節點的掛載點、掛載權限等掛載配置、可選配置、短橫線表示前面可選配置的結束、文件系統類型、文件系統特有的掛載源或者為none、額外配置。
mounts
文件,掛載在當前進程的文件系統列表,/dev/vda1 / ext4 rw,relatime,data=ordered 0 0 格式參照(man fstab)。
mountstats
文件,掛載信息,格式形如 device /dev/vda1 mounted on / with fstype ext4 [statistics]。
net
目錄,保存進程的網絡相關文件和目錄。
ns
目錄,保存了每個名字空間的入口,詳見(man namespaces)。
numa_maps
文件,numa即Non Uniform Memory Access,詳見(man numa)。
oom_adj
文件,調整OOM分數,OOM即Out Of Memory,發生OOM時OOM Killer根據OOM分數殺掉分數高的進程,默認值為0,會繼承自父進程的設置。
oom_score
文件,OOM分數。
oom_score_adj
文件,OOM分值介于-1000到1000之間。
pagemap
文件,當前進程的虛擬內存頁映射信息,需要配置CONFIG_PROC_PAGE_MONITOR。
personality
文件,使進程個性標志在/proc中可見。因為一個進程的個性可能是敏感的(例如READ_IMPLIES_EXEC),所以這個文件只能被進程所有者讀。
projid_map
文件,與用戶和組ID映射類似,可以為用戶名稱空間創建項目ID映射。(項目id用于磁盤配額;請參見setquota(8)和quotactl(2)。)
patch_state
文件,公開每個任務的補丁狀態值,以便用戶可以確定哪些任務正在阻止修補操作的完成。
root -> /
目錄,鏈接到了當前進程的根目錄。
sched
文件,進程的調度統計、狀態信息。
schedstat
文件,進程的調度信息。
sessionid
文件,進程會話ID,默認4294967295。
setgroups
文件,如果用戶命名空間中包含進程pid的進程被允許使用setgroups(2)系統調用,則/proc/[pid]/setgroups文件顯示字符串"allow";如果用戶名稱空間中不允許setgroups(2),則顯示“deny”。注意,不管/proc/[pid]/setgroups文件中的值是多少(也不管進程的能力是多少),如果/proc/[pid]/gid_map還沒有設置,調用setgroups(2)也是不允許的。
smaps
文件,內存映射信息,類似于pmap命令,需要配置CONFIG_PROC_PAGE_MONITOR。
stack
文件,內核空間的函數調用堆棧,需要配置CONFIG_STACKTRACE。
stat
文件,進程狀態信息,用于ps命令。
statm
文件,進程內存使用信息,以空格分隔的7個數字,從左到右分別表示程序總大小、常駐內存大小、共享內存頁大小、text code、library、data + stack、dirty pages。
status
文件,可讀性好的進程相關信息。
syscall
文件,系統調用相關信息,需要配置CONFIG_HAVE_ARCH_TRACEHOOK。
task
目錄,每個線程一個子目錄,目錄名為線程ID。
timers
文件,POSIT定時器列表,包括定時器ID、信號等信息。
uid_map
文件,用戶ID映射信息。
wchan
文件,進程休眠時內核中相應位置的符號表示,如do_wait。
acpi/wakeup
文件,設備喚醒操作。
buddyinfo
文件,用于診斷內存碎片問題。
bus
目錄,已安裝的總線。
input/devices
文件,輸入設備信息。
input/handlers
文件,句柄信息。
pci/00/00.0-08.0
文件,pci插口信息。
pci/devices
文件,pci設備信息。
cgroups
cgroups信息匯總,字段 subsys_name hierarchy num_cgroups enabled。
cmdline
文件,系統啟動時傳遞給Linux內核的參數,如lilo、grub等boot管理模塊。
consoles
文件,要查看系統控制臺/dev/console中當前使用的設備行字符,你可以簡單地查看/proc/console文件.
cpuinfo
文件,CPU和系統架構信息,lscpu命令使用這個文件。
crypto
文件,內核加密API提供的加密列表。
devices
文件,設備相關信息。
diskstats
文件,磁盤狀態。
dma
文件,dma即Direct Memory Access。
driver
nvram
文件,提供對 PC 和 Ataris 上實時時鐘中的非易失性存儲器的訪問。在 PC 上,這通常稱為 CMOS 內存并存儲 BIOS 配置選項。
rtc
文件,系統運行時配置。
execdomains
文件,執行域列表。
fb
文件,Frame Buffer信息,需要配置CONFIG_FB。
filesystems
文件,內核支持的文件系統類型(man filesystems)。
fs
目錄,掛載的文件系統信息。
interrupts
文件,每個CPU每個IO的中斷信息。依次顯示irq編號,每個cpu對該irq的處理次數,中斷控制器的名字,irq的名字,以及驅動程序注冊該irq時使用的名字。
iomem
文件,IO內存映射信息。
ioports
文件,IO端口信息。
irq
目錄,下面會為每個注冊的irq創建一個以irq編號為名字的子目錄。
kallsyms
文件,用于動態鏈接和和模塊綁定的符號定義。
kcore
文件,系統中ELF格式的物理內存。
keys
文件,公開了讀取線程具有查看權限的鍵列表,并提供了有關每個鍵的各種信息。線程不需要擁有密鑰,該密鑰在此文件中可見。
key-users
文件,列出了在系統上至少具有一個密鑰的每個用戶ID的各種信息。
kmsg
文件,內核日志信息,dmsg命令使用這個文件。
kpagecount
文件,每個物理頁幀映射的次數,需要配置CONFIG_PROC_PAGE_MONITOR。
kpageflags
文件,每個物理頁幀的掩碼,需要配置CONFIG_PROC_PAGE_MONITOR。
loadavg
文件,當前系統負載。
locks
文件,當前文件鎖的狀態。
mdstat
文件,虛擬設備信息(軟raid等)。
meminfo
文件,系統內存使用統計,free命令使用了這個文件。
misc
文件,其他的主要設備(設備號為10)上注冊的驅動。
modules
文件,系統加載的模塊信息,相關命令為lsmod。
mounts -> self/mounts
文件,鏈接到了/self/mounts。
mtrr
文件,Memory Type Range Registers。
net -> self/net
目錄,網絡偽文件系統相關。
pagetypeinfo
文件,其他頁面分配器信息。
partitions
文件,分區信息。
sched_debug
文件,調度器debug信息。
schedstat
文件,調度器信息。
scsi
目錄,SCSI接口設備。
self -> 22699
目錄,鏈接到了當前進程所在的目錄。
slabinfo
文件,內核緩存信息,需要配置CONFIG_SLAB。
softirqs
文件,系統軟中斷信息。
stat
文件,系統和內核的統計信息。
swaps
文件,swap分區使用情況。
sys
目錄,系統變量相關信息。
sysrq-trigger
文件,可寫,觸發系統調用。
sysvipc
目錄,包括msg、sem、shm三個文件,為System V IPC對象。
timer_list
文件,還在運行著的定時器列表。
timer_stats
文件,定時器狀態。
tty
目錄,tty設備相關。
uptime
文件,系統更新時間和進程空閑時間。
version
文件,內核版本信息。
vmallocinfo
文件,虛擬內存分配信息。
vmstat
文件,內存統計信息,以鍵值對形式顯示。
zoneinfo
文件,內存區塊信息,用于分析虛擬內存的行為。
以上就是“linux下proc是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。