linux下的proc
A. linux 下/proc目錄在哪
/proc是linux的跟目錄下的一個目錄,你可以在《linux就該這么學》看看補一下基礎知識,或者去網路查一些相關的資料都可以
B. 如何查看進程打開了哪些文件---linux下的proc文件系統
procfs是一種文件系統,通常會掛載在/proc上。ls/proc
可以看到很多以進程ID命名的文件夾,每個進程運行時的信息都記錄在相應的文件夾下,而內核運行時信息直接記錄在/proc下,大多是只讀文件,如meminfo,cpuinfo,cmdline等,非數字命名的文件夾,是內核各子系統相關部分,如bus
匯流排信息(只讀)
drivers
驅動信息(只讀)
fs
文件系統特別信息(只讀)
ide
IDE介面信息(只讀)
irq
IRQ信息(只讀)
net
網路子系統信息(只讀)
scsi
SCSI系統信息(只讀)
sysvipc
IPC子系統信息(只讀)
tty
tty子系統信息(只讀)
sys
系統內核可調參數
(可調)
C. linux下如何讀proc
用time命令運行程序,結束後就能得到運行時間。
timeprocName
最終會得到以下三類時間:
1)實際時間(realtime):從command命令行開始執行到運行終止的消逝時間;
2)用戶CPU時間(userCPUtime):命令執行完成花費的用戶CPU時間,即命令在用戶態中執行時間總和;
3)系統CPU時間(systemCPUtime):命令執行完成花費的系統CPU時間,即命令在核心態中執行時間總和。
其中,用戶CPU時間和系統CPU時間之和為CPU時間,即命令佔用CPU執行的時間總和。
實際時間要大於CPU時間,因為Linux是多任務操作系統,往往在執行一條命令時,系統還要處理其它任務。
內存可以通過/proc/${pid}/mem文件查看。
寫到腳本里:
timeprocName&
pid=`ps|grepprocName|grep-vgrep|awk'{print$1}'`
cat/proc/${pid}/mem
不知道腳本執行的速度能不能趕上在procName程序執行完前做完這一系列動作。
D. Linux系統中的/proc文件系統有什麼用
Linux 內核提供了一種通過 /proc 文件系統,在運行時訪問內核內部數據結構、 改變內核設置的機制。盡管在各種硬體平台上的 Linux 系統的 /proc 文件系統的 基本概念都是相同的,但本文只討論基於 intel x86 架構的 Linux /proc 文件系 統。 /proc --- 一個虛擬文件系統 /proc 文件系統是一種內核和內核模塊用來向進程 (process) 發送信息的機制 (所以叫做 /proc)。這個偽文件系統讓你可以和內核內部數據結構進行交互,獲取 有關進程的有用信息,在運行中 (on the fly) 改變設置 (通過改變內核參數)。 與其他文件系統不同,/proc 存在於內存之中而不是硬碟上。如果你察看文件 /proc/mounts (和 mount 命令一樣列出所有已經載入的文件系統),你會看到其中 一行是這樣的: 代碼如下: grep proc /proc/mounts /proc /proc proc rw 0 0 /proc 由內核控制,沒有承載 /proc 的設備。因為 /proc 主要存放由內核控制 的狀態信息,所以大部分這些信息的邏輯位置位於內核控制的內存。對 /proc 進行 一次 'ls -l' 可以看到大部分文件都是 0 位元組大的;不過察看這些文件的時候,確 實可以看到一些信息。這怎麼可能?這是因為 /proc 文件系統和其他常規的文件系 統一樣把自己注冊到虛擬文件系統層 (VFS) 了。然而,直到當 VFS 調用它,請求 文件、目錄的 i-node 的時候,/proc 文件系統才根據內核中的信息建立相應的文件 和目錄。 載入 proc 文件系統 如果系統中還沒有載入 proc 文件系統,可以通過如下命令載入 proc 文件系統: 代碼如下: mount -t proc proc /proc 察看 /proc 的文件 /proc 的文件可以用於訪問有關內核的狀態、計算機的屬性、正在運行的進程的 狀態等信息。大部分 /proc 中的文件和目錄提供系統物理環境最新的信息。盡管 /proc 中的文件是虛擬的,但它們仍可以使用任何文件編輯器或像'more', 'less'或 'cat'這樣的程序來查看。當編輯程序試圖打開一個虛擬文件時,這個文件就通過內核 中的信息被憑空地 (on the fly) 創建了。這是一些我從我的系統中得到的一些有趣 結果: 代碼如下: $ ls -l /proc/cpuinfo -r--r--r-- 1 root root 0 Dec 25 11:01 /proc/cpuinfo $ file /proc/cpuinfo /proc/cpuinfo: empty $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 8 model name : Pentium III (Coppermine) stepping : 6 cpu MHz : 1000.119 cache size : 256 KB fdiv_bug : no hlt_bug : no sep_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr xmm bogomips : 1998.85 processor : 3 vendor_id : GenuineIntel cpu family : 6 model : 8 model name : Pentium III (Coppermine) stepping : 6 cpu MHz : 1000.119 cache size : 256 KB fdiv_bug : no hlt_bug : no sep_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr xmm bogomips : 1992.29 這是一個從雙 CPU 的系統中得到的結果,上述大部分的信息十分清楚地給出了這個系 統的有用的硬體信息。有些 /proc 的文件是經過編碼的,不同的工具可以被用來解釋 這些編碼過的信息並輸出成可讀的形式。這樣的工具包括:'top', 'ps', 'apm' 等。 得到有用的系統/內核信息 proc 文件系統可以被用於收集有用的關於系統和運行中的內核的信息。下面是一些重要 的文件: /proc/cpuinfo - CPU 的信息 (型號, 家族, 緩存大小等) /proc/meminfo - 物理內存、交換空間等的信息 /proc/mounts - 已載入的文件系統的列表 /proc/devices - 可用設備的列表 /proc/filesystems - 被支持的文件系統 /proc/moles - 已載入的模塊 /proc/version - 內核版本 /proc/cmdline - 系統啟動時輸入的內核命令行參數 proc 中的文件遠不止上面列出的這么多。想要進一步了解的讀者可以對 /proc 的每一個 文件都'more'一下或讀參考文獻[1]獲取更多的有關 /proc 目錄中的文件的信息。我建議 使用'more'而不是'cat',除非你知道這個文件很小,因為有些文件 (比如 kcore) 可能 會非常長。 有關運行中的進程的信息 /proc 文件系統可以用於獲取運行中的進程的信息。在 /proc 中有一些編號的子目錄。每個編號的目錄對應一個進程 id (PID)。這樣,每一個運行中的進程 /proc 中都有一個用它的 PID 命名的目錄。這些子目錄中包含可以提供有關進程的狀態和環境的重要細節信息的文件。讓我們試著查找一個運行中的進程。 代碼如下: $ ps -aef grep mozilla root 32558 32425 8 22:53 pts/1 00:01:23 /usr/bin/mozilla 上述命令顯示有一個正在運行的 mozilla 進程的 PID 是 32558。相對應的,/proc 中應該有一個名叫 32558 的目錄 代碼如下: $ ls -l /proc/32558
E. linux環境如何執行proc文件
不在PATH環境變數路徑里的可執行文件要運行,得加路徑,相對路徑、絕對路徑都可以,比如
./proc
F. linux里proc文件系統 proc的全稱是什麼
proc文件系統是一個偽文件系統,它只存在內存當中,而不佔用外存空間。它以文件系統的方式為訪問系統內核數據的操作提供介面
G. linux下用proc函數怎麼實現循環隊列
為充分利用向量空間,克服順序存儲結構的"假溢出"現象的方法是:將向量空間想像為一個首尾相接的圓環,並稱這種向量為循環向量。存儲在其中的隊列稱為循環隊列(Circular Queue)。這種循環隊列可以以單鏈表的方式來在實際編程應用中來實現。
循環隊列中,由於入隊時尾指針向前追趕頭指針;出隊時頭指針向前追趕尾指針,造成隊空和隊滿時頭尾指針均相等。因此,無法通過條件front==rear來判別隊列是"空"還是"滿"。使用求余運算可以判斷隊列是否已滿。
代碼
//circular Queue 循環隊列實現 #include <stdlib.h>#include <stdio.h> #define MAXSIZE 100typedef int ElemType ; typedef struct { ElemType *base; //存儲內存分配基地址 int front; //隊列頭索引 int rear; //隊列尾索引}circularQueue; //初始化隊列InitQueue(circularQueue *q){ q->base = (ElemType *)malloc((MAXSIZE) * sizeof(ElemType)); if (!q->base) exit(0); q->front = q->rear = 0;} //入隊列操作InsertQueue(circularQueue *q, ElemType e){ if ((q->rear + 1) % MAXSIZE == q->front) return; //隊列已滿時,不執行入隊操作 q->base[q->rear] = e; //將元素放入隊列尾部 q->rear = (q->rear + 1) % MAXSIZE; //尾部元素指向下一個空間位置,取模運算保證了索引不越界(余數一定小於除數)} //出隊列操作DeleteQueue(circularQueue *q, ElemType *e){ if (q->front == q->rear) return; //空隊列,直接返回 *e = q->base[q->front]; //頭部元素出隊 q->front = (q->front + 1) % MAXSIZE;}
更多信息可以參考《Linux就該這么學》
H. linux 怎麼訪問proc目錄
/proc目錄下都是一些純文本文件,記錄的是從驅動程序和內核獲取到的信息,是非常有用的系統狀態信息,因為是文本文件只需要用cat命令來訪問就可以了,比如:
cat /proc/cpuinfo
cat /proc/meminfo
可以分別查看到CPU和內存的信息
I. 查閱資料,了解 linux/unix 的 /proc 文件系統是什麼有什麼作用
/proc 文件系統是一個虛擬文件系統, 它只存在內存當中,而不佔用外存空間。Linux 內核提供了一種通過 /proc 文件系統,在運行時訪問內核內部數據結構、改變內核設置的機制。用戶和應用程序可以通過proc得到系統的信息,並可以改變內核的某些參數。由於系統的信息,如進程,是動態改變的,所以用戶或應用程序讀取proc文件時,proc文件系統是動態從系統內核讀出所需信息並提交的。
示例
查看proc信息: ls /proc/
查看內核信息:ls /proc/sys
查看網卡信息:ls /proc/net
查看SCSI信息: ls /proc/scsi
查看已載入模塊:cat /proc/moles
……