1. 程式人生 > >走入計算機的第七天(關於操作系統的內容)

走入計算機的第七天(關於操作系統的內容)

swap kill 將他 正在 錯誤 ide 默認 監控系統 空間

1 監控系統的一些命令

top:是linux中常用的性能分析工具,用來查看系統中各個資源的占用空間的數據。

第一行是任務信息,從中到右分別是(當前時間),(系統運行時間,以時:分的格式),(當前登錄用戶數),(系統負載,三個數值分別是1分鐘,5分鐘,15分鐘前到現在的平均值。

第二行屬於進程,從左到右分別是(進程總數),(正在運行的進程),(睡眠的進程),(停止的進程數),(僵屍進程)。

第三行是關於CPU的信息,從左到右分別是(用戶空間占用CPU百分比),(內核空間占用CPU百分比),(用戶進程空間內改變過優先級的進程占用CPU的百分比),(空閑CPU的百分比)(,等待輸入輸出的CPU時間百分比),(硬件中斷占用CPU時間的百分比),(軟件中斷占用CPU時間的百分比)。

第四行和第五行屬於內存信息。

free:顯示內存的使用狀態。

(total)(Mem)屬於物理內存。

(used)(Mem)使用的物理內存。

(free)(Mem)可以使用的內存。

他們之間的關系是(total)(Mem)=(used)(Mem)+(free)(Mem)

(shared)(Mem)共享內存,表示有幾個進程共享的內存。

(buffers)(Mem)表示已經分配但還未使用的buffers大小。

(cached)(Mem)表示已經分配但還未使用的cached大小。

buffers和cached功能是:

buffers是用於存放要輸出到disk(塊設備)的數據,而cached是存放從disk上讀出的數據。都是為了提高IO的性能,由OS管理。

操作系統為了提高IO read的性能,總是要多一些cached數據,這就是(cached)(memory)為什麽比較大。

(used)(-buffers/cached):一個應用程序認為系統被用掉多少內存。(used)(-buffers/cached)=(used)(Mem)—(buffers)(Mem)—(cached)(Mem)

(free)(+buffers/cached):一個應用程序認為系統還有多少內存。(free)(+buffers/cached)=(free)(Mem)+(buffers)(Mem)+(cached)(Mem)

free命令的數值都是從?proc/meminfo中讀取的。 $ free -m是數值的單位為MB,不過數值沒有那麽詳細。可以使用命令($ free -wm)可以得到buffers和cached各自使用的數值。

pstree:以樹狀形式顯示程序。進程狀態的使用方法是(pstree PID)。

kill:比一個信號發給一個或多個進程,默認為發送終止信號。終止進程的方法是(kill PID)。殺死進程使用方法是(kill -9 PID)。

pgrep:通過進程和其他屬性查找進程。查找進程方法是(pgrep 要查找的進程名稱)。

pkill:通過進程和其他屬性發信號給進程。殺死進程是(pkill 要殺死的進程名稱)。

fdisk:創建磁盤分區。

d(delete):刪除一個已存在的分區。

l(list):列出也存在分區的類型。

m(menu):列出fdisk中使用的所有命令。

n(new):添加一個新的分區。

p(print):列出分區表的內容。

q(quit):退出fdisk,但是不儲存所操縱的變化。

t(title):改變分區系統的id。

w(write):退出fdisk,並儲存所操縱的變化。

partprobe:重新初始化內存中內核的分區表。

mkfs:格式化內存。使用方法是(mkfs.操作過後的對象名 操作對象)。

e2label:設定或查看一個設備的label名稱。查看某個分區的方法是(e2label 操作的對象)。設定命令的方法是(e2label 操作的對象 wg)。

2 進程的信息

PID:進程id。

PPID:父進程id。

RUESR:Real user name。

UID:進程所有者的用戶id。

USER:進程所有者的信息。

TTY:啟動進程的終端名(不是從終端啟動的進程則會顯示?)。

RR:優先級。

NI:nice值。(負值表示高優先級,正值表示低優先級)。

P:最後使用的CPU(僅在多CPU環境下有意義)。

%CPU:上次更新到現在CPU時間占用的百分比。

TIME:進程使用CPU的時間統計(單位秒)。

%MEM:進程使用的物理內存百分比。

VIRT:進程使用的虛擬內存總理(單位KB)。VIRT=SWAP+RES.

SWAP:進程使用的虛擬內存中被換出的大小(單位KB)。

RES:進程使用的沒有被換出的物理內存大小(單位KB)。RES=CODE+DATA。

CODE:可執行代碼占用的物理內存大小(單位KB)。

DATA:可執行代碼以外部分占用物理內存的大小(單位KB)。

SHR:共享內存大小(單位KB)。

nFLT:面頁錯誤的次數。

nDRT:最後一次寫入到現在被修改的次數。

S:進程狀態

D=不可中斷的睡眠狀態。

R=運行。

S=睡眠。

T=跟蹤或停止。

Z=僵屍進程。

COMMAND:命令名或命令行。

WCHAN:若該進程在睡眠,則會顯示睡眠中的系統函數名。

Flags:任務標誌,參考sched.h。

3 CPU的利用率與load average

CPU正常的利用率是<70%的。CPU負載<或=1時,能正常執行。CPU負載>1時,屬於超負荷執行。load average應該<或=CPU核數*0.7。CPU負載和CPU利用率過高都是不好的現象。

為何要有1分鐘,5分鐘,15分鐘三種cpu的負載:是希望我們將他們三個值結合起來看。或者說是展示一個動態圖表示的數據。

進程掛起是自身原因,遇到了I/O的阻塞,便會讓出CPU讓其他進程去執行,保證CPU一直在運行。

與進程無關,在操作層面時,有個進程占用CPU過久時,或者需要調用硬盤裏的文件時,而會調用其它進程使用CPU。

4 硬盤的相關內容

在linux系統中,每個設備都會被當一個文件來對待。而他們對應的文件名如下:

IDE硬盤:/dev/hd(a-d)

SCSI硬盤:/dev/sd(a-p)

U盤:/dev/sd(a-p){與SCSI硬盤一樣)

CDROM:/dev/sr0

硬盤的結構和分區:硬盤為什麽要有分區,更容易管理和控制操作系統,這樣系統效率高,更容易備份,可以限制用戶使用磁盤份額。

硬盤主要分為主分區,擴展分區和邏輯分區。一個硬盤上最大可以劃分4個主分區,在SCSI磁盤最多可以分15個分區,IDE磁盤可以分63個分區。

硬盤的邏輯結構:硬盤結構為磁道,塊,磁柱和分區。

塊是盤片上訪問的最小單位,一個塊可以儲存一個字節的數據。

磁道是有一系列的頭尾相連塊組成的圓圈。

磁柱是有一疊磁道在相同半徑的每個盤面的磁道組成的。

分區是有一組相鄰的磁道組成的。

走入計算機的第七天(關於操作系統的內容)