« Home | 如何自已compiler gcc 2.95.3 (在Fedora 4用gcc 4.0測試過) » | 如何每次自動載入8139too.ko » | 幾個常用的embedded Web Server » | uCLinux的起源-第一個uClinux Project » | hdparm用來取得或設定硬碟的參數 » | 幾個專門支援從USB Boot的Linux Package » | Google的Linux風格首頁 » | Google.com Search技巧 » | 消費者原生內容 Consumer-Generated Content » | 我的新玩具Mighty Mouse » 

2005/10/12 

幾個監看/改變Linux系統的記憶體/Process/CPU使用有關的指令

Wednesday, October 12, 2005
10/12/2005 5:01:57 AM
幾個監看/改變Linux系統的記憶體/Process/CPU使用有關的指令
1.ps 檢視目前正在執行中的 process
參數: 注意沒有加"-"並不是代表省略 例如pa -a 和 ps a是不太相同的
-a : 顯示在所有終端機下所執行的程序(含其它使用者)。
a : 顯示在現在的終端機下所執行的所有程序(同-a再加上顯示command的參數)。
-A : 顯示所有的程序(含服務)。
-f : 顯示 UID、PPIP(父process)、C、STIME 欄位。
S : 列出程序時,包含『已死亡』 的子程序資訊。
u : 以使用者程序為主的格示來顯示。
v : 以虛擬記憶體的格式來顯示。
V : 顯示版本資訊。
x : 顯示所有的程序,不以終端機來分別。
範例:
ps -A |grep hello hello有沒有在執行
ps -f -A 可以看到所有process關係,例如PID=1的init共有多少子孫(建議改用pstree)
2.nice/renice 改變Process的優先順序,-19 為最高而 20 為最低。

nice Command &(將程式放到背景執行,同時指定優先順序為 10。)
nice # Command &(將程式放到背景執行,同時指定優先順序為#。)

renice # [#]ProcessID(將指定的背景中執行程式的優先順序設定為 #。)
renice -u UserName # [#]ProcessID(將指定的使用者的背景中執行程式的優先順序全部 設定為#。)

3.top 顯示目前的系統使用概況
預設以 CPU 使用率排序
以Memory使用率排序。
以執行時間排序。
檢視命令列的參數。


檢視命令列的參數。
按檢視特定的使用者。
離開。

4.vmstat 可用來顯示 processes, memory, paging, block IO, traps, 與 cpu activity。
# vmstat 1 //更新速度為1秒
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 140088 5272 30600 0 0 305 73 1035 295 3 8 84 5
0 0 0 140088 5272 30600 0 0 0 0 1003 9 0 0 100 0
The fields of vmstat's display are
procs
r: The number of processes waiting for run time.
b: The number of processes in uninterruptible sleep.
swpd swapped

memory (in Kbytes)
swpd: the amount of virtual memory used.
free: the amount of idle memory.
buff: the amount of memory used as buffers.
cache: the amount of memory used as cache.
inact: the amount of inactive memory. (-a option)
active: the amount of active memory. (-a option)
Swap
si: Amount of memory swapped in from disk (/s).
so: Amount of memory swapped to disk (/s).

IO
bi: Blocks received from a block device (blocks/s).
bo: Blocks sent to a block device (blocks/s).
System
in: The number of interrupts per second, including the clock.
cs: The number of context switches per second.

CPU
These are percentages of total CPU time.
us: Time spent running non-kernel code. (user time, including nice time)
sy: Time spent running kernel code. (system time)
id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
wa: Time spent waiting for IO. Prior to Linux 2.5.41, shown as zero.

5.kill/killall 刪除正在執行中的程式
kill 要先查PID(Process ID),kill則使用程式的名稱
參數:
-1 :重新讀取一次參數的設定檔 (類似 reload);
-2 :代表與由鍵盤輸入 [ctrl]-c 同樣的動作;
-9 :立刻強制刪除一個Process;
-15:以正常的程序方式終止Process。

#ps -A |grep hello
10001 tty1 00:00:00 hello
使用#kill 10001 -9 刪除
#killall -v hello
Killed hello(10001) with signal 15

6.pstree 列出所有的Process的相關性
參數:
-A :各Process樹間以 ASCII 字元來連接;
-p :並列出每個 process 的 PID;
-u :並列出每個 process 的所屬帳號名稱。
範例一:列出目前系統上面所有的Process樹的相關性:
[root@linux ~]# pstree -A
init-+-atd
|-crond
|-dhclient
7.找出那個Process讓Device出現device is busy
範例 #umount /mnt出現
umount: /mnt: device is busy
找出兇手的方法
#fuser /mnt
/mnt: 2028c
#ps -A"|grep 2028
2028 tty1 00:00:00 bash
表示tty1正在使用中
8.如何得知那個User開了那些檔案
範例 user :root 開了那些和httpd有關的檔案
#lsof -u root|grep httpd
bash 2028 root cwd DIR 8,1 4096 1105530 /work/tinyhttpd/tinyhttpd-0.1.0
httpd 22352 root cwd DIR 8,1 4096 1105530 /work/tinyhttpd/tinyhttpd-0.1.0
httpd 22352 root rtd DIR 8,1 4096 2 /
httpd 22352 root txt REG 8,1 14320 1105644 /work/tinyhttpd/tinyhttpd-0.1.0/httpd
httpd 22352 root mem REG 8,1 126648 1236850 /lib/ld-2.3.5.so
httpd 22352 root mem REG 8,1 1489572 1236851 /lib/libc-2.3.5.so
httpd 22352 root mem REG 8,1 101600 1236854 /lib/libpthread-2.3.5.so
httpd 22352 root mem REG 0,0 0 [stack] (stat: No such file or directory)
httpd 22352 root 0u CHR 4,1 2211 /dev/tty1
httpd 22352 root 1u CHR 4,1 2211 /dev/tty1
httpd 22352 root 2u CHR 4,1 2211 /dev/tty1
httpd 22352 root 3u IPv4 116871 TCP *:32770 (LISTEN)
lsof 22359 root cwd DIR 8,1 4096 1105530 /work/tinyhttpd/tinyhttpd-0.1.0
bash 22360 root cwd DIR 8,1 4096 1105530 /work/tinyhttpd/tinyhttpd-0.1.0
lsof 22361 root cwd DIR 8,1 4096 1105530 /work/tinyhttpd/tinyhttpd-0.1.0

很難安裝!
痛苦的經歷!

Post a Comment

About me

  • I'm Martin's blog 馬汀的部落格
  • From 中壢市, 桃園縣, Taiwan
  • -----BEGIN GEEK CODE BLOCK----- Version: 3.1 Comment: For info see http://www.geekcode.com GC/CS/CC/E/IT/TW d- s a C++++ L++++ P+ L++++ E--- W+++ N++ o+ K- w+++ O- M- V- PS+ PE++ Y+ PGP+ t 5- X++ R- tv- b+++ DI+ D-- G e+++ h+ r+ y+ z? ------END GEEK CODE BLOCK------ /**************************** 旅行是我生命的動力 它的樂趣從計劃旅行開始 我樂於分享旅行及Linux Kernel上的每一件事. ****************************/
My profile