ps-top

ps

top

nice

free

screen

程序與進程

程序是靜態的(文件),進程是動態的(運行的程序)

 

進程和線程:

一個程序至少有一個進程,一個進程至少有一個線程。

進程之間內存是獨立的

線程之間內存共享。高併發好一些  安全性差一些。

 

查看進程樹:

pstree  樹形結構顯示系統進程信息

[root@server63 ~]# pstree

init-+-NetworkManager

     |-abrtd

     |-acpid

     |-atd

     |-auditd---{auditd}

     |-automount---4*[{automount}]

-p 顯示進程號

[root@server63 ~]# pstree-p |more

init(1)-+-NetworkManager(1321)

        |-abrtd(1618)

        |-acpid(1412)

        |-atd(1637)

        |-auditd(1227)---{auditd}(1228)

        |-automount(1489)-+-{automount}(1490)

        |                 |-{automount}(1491)

        |                 |-{automount}(1494)

        |                 `-{automount}(1497)

 

 

顯示目錄樹形結構  tree

[root@server63 ~]# rpm-ivh /mnt/Packages/tree-1.5.3-2.el6.x86_64.rpm

warning:/mnt/Packages/tree-1.5.3-2.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, keyID c105b9de: NOKEY

Preparing...                                                   ########################################### [100%]

 

[root@server63 ~]# tree/boot

/boot

├── config-2.6.32-431.el6.x86_64

├── efi

   └── EFI

       └── redhat

           └── grub.efi

├── grub

   ├──device.map

   ├──e2fs_stage1_5

   ├──fat_stage1_5

   ├──ffs_stage1_5

   ├── grub.conf

   ├──iso9660_stage1_5

   ├──jfs_stage1_5

   ├── menu.lst-> ./grub.conf

 

 

列出目前所有正在內存當中的進程

ps

1ps a顯示現行終端機下的所有程序,包括其他用戶的程序。
2
ps-A   顯示所有程序。
3
psc    列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
4
ps -e  此參數的效果和指定"A"參數相同。
5
pse   列出程序時,顯示每個程序所使用的環境變量。
6
psf    ASCII字符顯示樹狀結構,表達程序間的相互關係。
7
ps-H    顯示樹狀結構,表示程序間的相互關係。
8
ps-N   顯示所有的程序,除了執行ps指令終端機下的程序之外。
9
pss     採用程序信號的格式顯示程序狀況。
10
psS     列出程序時,包括已中斷的子程序資料。
11
ps -t <終端機編號>  指定終端機編號,並列出屬於該終端機的程序的狀況。
12
ps u以用戶爲主的格式來顯示程序狀況。
13
ps x顯示所有程序,不以終端機來區分。

 

manps

       ps - report a snapshot of the currentprocesses. 報告當前進程的快照

 

[root@server63~]# ps -aux

Warning:bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

USER        PID %CPU %MEM    VSZ  RSS TTY      STAT START   TIME COMMAND

root          1 0.0  0.1  19356 1536 ?        Ss   11:08  0:01 /sbin/init

root          2 0.0  0.0      0    0 ?        S    11:08  0:00 [kthreadd]

 

USER   運行此進程的用戶名

PID     process的號碼

%CPU   process使用cpu資源的百分比

%MEM  process所佔用的物理內存百分比

VSZ           process使用掉的虛擬內存量(kbytes

RSS           process佔用的固定的內存量 kbytes

TTY            process是在哪個終端機上面運作。若與終端機無關,則顯示“?”。另外tty1-tty6是本機上面的登入者程序,若爲pts/0等等的 則表示爲網絡連接進主機的程序。

STAT                   該程序目前的狀態,linux進程有5種基本狀態:

  R:(正在運行或在運行隊列中等待)

 S:該程序目前正在睡眠當中,但可能被某些訊號(signal)喚醒。

 T:該進程目前暫停了

 

例: vim a.txt 按下 ctrl+z  (將進程轉到後臺,並使之掛起)

ctrl-c是發送 SIGINT信號,終止一個進程

ctrl-z是發送SIGSTOP信號,掛起一個進程

ps-aux | grep vim

[root@server63~]# ps -aux | grep vim

Warning:bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

root       3460 0.2  0.3 143660  3340 pts/1   T    14:41  0:00 vim a.txt

root       3462 0.0  0.0 103252   824 pts/1   S+   14:42   0:00 grep vim

 

Z :該程序應該已經終止,但是其父程序卻無法正常的終止它。造成zombie(殭屍)程序的狀態

不可中斷狀態  瞭解

 

         < 高優先級的

         N低優先級的

         L有內存分頁但是帶鎖

         s包含子進程

         l多線程

         +前臺程序()

 

START process 被觸發啓動的時間

TIMEprocess 實際使用CPU運作的時間

COMMAND:該程序的實際指令

 

瞭解 : ps -ef

 

ps -aux 是用BSD的格式來顯示進程。

ps -ef 是用標準的格式顯示進程

 

 

top   動態查看進程

統計信息區前五行是系統整體的統計信息

1 第一行是任務隊列信息

uptime命令的執行結果

[root@server65~]# uptime

 14:30:44 up 1:13,  2 users,  load average: 0.05, 0.01, 0.00

 

14:30:44                         當前時間

up  1:13                         系統運行時間,格式爲時:分

2users                           當前登錄用戶數

loadaverage: 0.05, 0.01, 0.00    系統負載,即任務隊列的平均長度。三個數值分別爲1分                                    鍾、5分鐘、15分鐘前到現在的平均值。

                           

 

一般來說,每個CPU內核當前活動進程數不大於3,則系統運行良好。如果主機時四核cpu的話,那麼只要uptime最後輸出的一串字符數值小於4*3=12 即表示系統負載不是很嚴重

 

2 第二、三行爲進程和CPU信息

[root@server65~]# top

top- 15:10:10 up  1:52,  2 users, load average: 0.00, 0.00, 0.00

Tasks: 136total,   1 running, 136 sleeping,   0 stopped,  0 zombie

Cpu0  : 0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa, 0.0%hi,  0.0%si,  0.0%

Mem:   1004412k total,   324160k used,   680252k free,    40040k buffers

Swap:   204792k total,        0k used,   204792k free,   151096k cached

 

當有多個CPU時,這些內容可能會超過兩行。內容如下

Tasks:136 total           進程總數

1running                  正在運行的進程數

136 sleeping              睡眠的進程數

0stopped                  停止的進程數

0zombie                   殭屍進程數

 

Cpu(s):  0.0%us           系統用戶進程使用CPU百分比。不包括調高優先級的進程。CPU% 是                           由每個核的CPU佔用率之和算出來的。如果你是4CPU1 cpu使用                           率爲100% 2 cpu使用率爲100% ,則會出現cpu高於100%的象 最                           終爲200%        

0.3%sy                    內核中進程佔用cpu百分比           

0.0%ni                    用戶進程空間內改變過優先級的進程佔用的cpu百分比

99.7%id                   空閒cpu百分比

 

第四五行 爲內存信息

Mem:   1004412k total      物理內存總量

324160kused                使用的物理內存總量

680252kfree                空閒的內存總量

40040kbuffers              用做內核緩存的內存量 free -k 一個意思

Swap:   204792k total      交換分區總量

0kused                     使用的交換分區總量

204792kfree                空閒交換分區總量

151096kcached             緩衝的交換分區總量。內存中的內容被換出到交換區,而後又被還                           如到內存,但使用過的交換區尚未被覆蓋,該數值即爲這些內容已                           存在於內存中的交換區大小。相應的內存再次被換出時可不必再對                           交換區寫入。


 

 

進程信息

PID                                進程id

USER                               進程所有者的用戶名

NI                                 nice值(進程優先級)。負值表示高優先級,正值小時低優先級

RES                                實際使用內存大小

                                   進程狀態

                                   D=不可中斷的睡眠狀態

S                                  R=運行       T=跟蹤/停止       Z=殭屍進程

 

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

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

TIME+                              進程使用的CPU時間總計,單位1/100

COMMAND                            命令名/命令行

 

top 快捷鍵

q 退出

按內存排序

P   cpu 排序

默認3s刷新一次  按空格立即刷新

<> 上下翻頁

 

控制(關閉)進程

kill       向進程發送信號(停止進程)

1 HUP      重新加載配置文件。類似重啓

2  INT     ctrl+c 一樣   一般用於通知前臺進程組終止進程

9  KILL    強行終端

19 STOP     ctrl +Z 一樣

[root@server63 ~]# ps -aux | grep top

Warning: bad syntax, perhaps a bogus '-'? See/usr/share/doc/procps-3.2.8/FAQ

root      2530  0.5 0.1  15036  1216 tty1    S+   09:36   0:00 top

root      2555  0.0  0.0 103252  820 pts/0    S+   09:37  0:00 grep top

[root@server63 ~]# kill -9 2530

[root@server63 ~]# ps -aux | grep top          pgerp -l  httpd

Warning: bad syntax, perhaps a bogus '-'? See/usr/share/doc/procps-3.2.8/FAQ

root      2559  0.0  0.0 103252  820 pts/0    S+   09:38  0:00 grep top

 

[root@server63 ~]# ps aux | grep httpd    多進程時

root      2609  0.0 0.3 184284  3832 ?        Ss  09:42   0:00 /usr/sbin/httpd

apache    2612  0.0  0.2 184284 2436 ?        S    09:42  0:00 /usr/sbin/httpd

apache    2613  0.0  0.2 184284 2436 ?        S    09:42  0:00 /usr/sbin/httpd

apache    2614  0.0  0.2 184284 2436 ?        S    09:42  0:00 /usr/sbin/httpd

apache    2615  0.0  0.2 184284 2436 ?        S    09:42  0:00 /usr/sbin/httpd

 

[root@server63 ~]# pkill httpd     killall  httpd

[root@server63 ~]# ps -aux | grep httpd

Warning: bad syntax, perhaps a bogus '-'? See/usr/share/doc/procps-3.2.8/FAQ

pkill killall 通過程序名字 直接殺死所有進程

或者 殺掉父進程  kill 2609

 

優先級控制

nice    -20 ~19  越小優先級越高   普通用戶 0 - 19

作用: 以什麼優先級運行進程。 默認優先級是0

 

# vim a.txt 出現

Found a swap file by name".a.txt.swp"

    rm -rf   .a.txt.swp      kill 進程是不管用的

 

[root@server63 ~]# vim a.txt      top NI 0

nice -n -5 vim a.txt

 

[root@server63 ~]# ps -aux | grep vim

Warning: bad syntax, perhaps a bogus '-'? See/usr/share/doc/procps-3.2.8/FAQ

root      3177  0.0 0.3 143660  3336 pts/1    T<  10:29   0:00 vim a.txt

root      3184  0.0  0.0 103252  820 pts/1    S+   10:29  0:00 grep vim

 

[root@server63 ~]# top -p 3177 

   PIDUSER      PR  NI  VIRT RES  SHR S %CPU %MEM    TIME+

  3177root      15  -5  140m 3336 2188 T  0.0 0.3   0:00.03

 

 

renice #修改正在運行的進程的優先級

renice -n 5 PID   修改進程優先級

 

nice -n -5 vim a.txt

[root@server63 ~]# ps -aux | grep vim

Warning: bad syntax, perhaps a bogus '-'? See/usr/share/doc/procps-3.2.8/FAQ

root      3230 0.5  0.3 143660  3336 pts/1   T<   10:37   0:00 vim a.txt

root      3232  0.0  0.0 103252  820 pts/1    S+   10:37  0:00 grep vim

 

[root@server63 ~]# top -p 3230    

  PIDUSER      PR  NI VIRT  RES  SHR S %CPU %MEM    TIME+

  3230root      25   -5  140m 3336 2188 T  0.0 0.3   0:00.03

[root@server63 ~]# renice -n 5 3230

3230: old priority -5, new priority 5

 

[root@server63 ~]# top -p 3230

  PIDUSER      PR  NI VIRT  RES  SHR S %CPU %MEM    TIME+

  3230root      25   5 140m 3336 2188 T  0.0  0.3  0:00.03

 

 

瞭解

前後臺進程切換

jobs  列出所有後臺進程

[root@server63 ~]# vim a.txt &

[1] 3282

[root@server63 ~]# jobs

[1]+  Stopped                 vim a.txt  #[1] 後臺進程 序列號

 

fg 後臺程序改到前臺

用法 fg 後臺進程 id

fg  1

 

 

查看內存

free /proc

 

free 查看系統內存量

-m MB 顯示

 

 

buffers  #緩存從磁盤讀出來的內容

cached  #緩存需要寫入磁盤的內容

 

例:

[root@server63 ~]# free -m

            total       used       free    shared    buffers     cached

Mem:          980        649        331          0         61        393

-/+ buffers/cache:        194        785

Swap:         199          0        199

 

運行

[root@server63 ~]# find /     #在另一終端查看buffers增加速度

 

[root@server63 ~]# dd if=/dev/zero of=a.txtbs=10M count=10  在另一終端查看cache的增加速度

 

[root@server63 ~]# free

            total       used       free    shared    buffers     cached

Mem:      1004412     664844     339568          0     63012     402448

-/+ buffers/cache:     199384    805028

Swap:      204792          0     204792

 

[root@server63 ~]# free

            total       used       free    shared    buffers     cached

Mem:      1004412      A          B        0         C         D

-/+ buffers/cache:          X         Y

Swap:      204792          0     204792

 

X=A-C-D

Y=B+C+D

 

 

screen 實戰後臺實時執行命令備份命令

[root@server63 ~]# rpm -ivh/mnt/Packages/screen-4.0.3-16.el6.x86_64.rpm

warning:/mnt/Packages/screen-4.0.3-16.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, keyID c105b9de: NOKEY

Preparing...                                                    ###########################################[100%]

  1:screen                                                    ########################################### [100%]

 

1 直接在命令行鍵入screen命令

[root@server63 ~]# screen

 

暫時中斷會話

screen窗口鍵入 ctrl+a+d  screen 會給出 detached(分離)提示

直接關閉當前pts 

 

[root@server63 ~]# screen -ls    #列出分離的會話

There is a screen on:

       5448pxs-0.xuegod63     (Detached)

1 Socket in /var/run/screen/S-root.

 

[root@server63 ~]# screen -r 4086   #重新連接會話


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章