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
1)ps 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(殭屍)程序的狀態
D 不可中斷狀態 瞭解
< 高優先級的
N低優先級的
L有內存分頁但是帶鎖
s包含子進程
l多線程
+前臺程序()
START: 該 process 被觸發啓動的時間
TIME:該process 實際使用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佔用率之和算出來的。如果你是4核CPU核1 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 退出
M 按內存排序
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 #重新連接會話