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