1、程序和進程的關系
(1)程序
- 保存在硬盤、光盤等介質中的可執行代碼和數據
- 靜態保存的代碼
(2)進程
- 在 CPU 及內存中運行的程序代碼
- 動態執行的代碼
- 父、子進程:每一個進程可以創建一個或多個進程
2、靜態查看進程信息
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.3 56640 6672 ? Ss 00:22 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 24
root 2 0.0 0.0 0 0 ? S 00:22 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 00:22 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 00:22 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 00:22 0:00 [migration/0].
(1)
- USER:啟動該進程的用戶賬號的名稱。
- PID:該進程在系統中的PID號,在當前系統中是唯一的。
- %CPU: CPU占用的百分比。
- %MEM:內存占用的百分比。
- VSZ:占用虛擬內存swap空間的大小。
- RSS:占用常駐內存物理內存的大小。
- TTY:表明該進程在哪個終端上運行。“?”表示未知或不需要終端。
- STAT:顯示了進程當前的狀態:D:不可中斷睡眠、S:可中斷的睡眠、R:就緒或運行狀態、T:中止狀態、Z: 僵死狀態、<:高優先級進程、N:低優先級進程、+:前台進程組中的進程、|:多線程的進程、s:會話進程的首進程
- START:啟動該進程的時間。
- TIME:該進程占用的CPU時間。
- COMMAND:啟動該進程的命令的名稱。
(2)stat狀態
- S:不可中斷睡眠
- R:可中斷睡眠
- Z:就緒或運行狀態
- <:高級有限進程
- N:低級優先進程
- +:前台進程組中的進程
- T:中止狀態
- Z:僵死狀態
3、動態查看進程
top - 00:51:38 up 28 min, 1 user, load average: 0.00, 0.01, 0.03
Tasks: 399 total, 2 running, 397 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2035356 total, 1760020 free, 134140 used, 141196 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1751724 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
722 root 20 0 0 0 0 S 0.3 0.0 0:00.10 xfsaild/dm-0
1 root 20 0 56640 6672 3888 S 0.0 0.3 0:01.31 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0
top - 16:58:24 【當前系統時間】 1:54 【系統已經運行 1 小時 54 分鍾】 2 users 【當前登錄 2 個用戶】 load average:0.00,0.00,0.00 【系統平均負載:1 分鍾的,5 分鍾的,15 分鍾的】 Tasks:108 total 【任務:108 個總進程】 1 running 【1 個進程正在運行】 107 sleeping 【107 個進程睡眠】 0 stoppd 【0 個進程停止】 0 zombie 【0 個僵屍進程(凍結進程)】 Cpu(s): 0.0%us 【用戶控件占用 CPU 百分比】 0.0%sy 【內核空間占用 CPU 百分比】 0.0%ni 【用戶進程控件內改變過優先級的進程占用 CPU 百分比】 100.0% 【空閑 CPU 百分比】 0.0%wa 【等待輸入輸出的 CPU 時間百分比】 0.0% hi 【】 0.0%si 【】 Men: 1012352k total 【物理內存總量 1012352k】 465816k used 【使用了 465816k 的物理內存】 546536k free 【空閑 546536k 的物理內存】 61064k buffe 【61064k 用作內核緩存】 Swap: 2031608k total 【交換分區總量 2031608k】 0k used 【沒有使用交換分區】 2031608k free 【空閑的交換分區總量 2031608k】 267580k cache 【緩沖的交換分區總量 267580k】 PID:進程號 USER:進程所有者的用戶名 PR:優先級 NI:nice 值。負值表示高優先級,正值表示低優先級 VIRT:進程使用的虛擬內存總量,單位 kb RES:進程使用的、未被換出的物理內存大小,單位 kb SHR:共享內存大小,單位 kb S:進程狀態 %CPU:上次更新到現在的 CPU 時間占用百分比 %MEM:進程使用的物理內存百分比 TIME+:進程使用的 CPU 時間總計,單位 1/100 秒 COMMAND:命令
進程的啟動方式專區:(前台運行,后台運行,殺死進程)
(2)后台啟動:在命令行尾加入“&”符號
(3)進程的前后台調度
Ctrl+Z 將當前進程掛起,即調入后台並停止執行
jobs 命令 查看處於后台的任務列表,加-l 同時顯示 PID 號
fg 命令 將后台進程恢復到前台運行,可指定任務程序號
bg 命令 將后台暫停的進程調至后台運行
示例:
[root@localhost ~]# cp /dev/cdrom mycd.iso &
[1] 12764 [root@localhost ~]# jobs -l [1]+ 12764 運行中 cp -i /dev/cdrom mycd.iso & [root@localhost ~]#
(4)終止進程的運行
。Ctrl+C 中斷正在執行的命令
。kill、killall 命令
kill 用於終止指定 PID 號的進程
killall 用於終止指定名稱的所有進程
-9 選項用於強制終止
示例:
[root@localhost ~]# pgrep -l cp
12764 cp
[root@localhost ~]# kill -9 12764
[root@localhost ~]# pstree -aup
├─vmtoolsd,6544 │ └─{vmtoolsd},6668 ├─vmtoolsd,8497 -n vmusr │ ├─{vmtoolsd},8558 │ └─{vmtoolsd},8584 ├─wpa_supplicant,7777 -u -f /var/log/wpa_supplicant.log -c /etc/wpa_supplicant/wpa_supplicant.conf -P/var/run/wpa_sup └─xdg-permission-,8260 ├─{xdg-permission-},8262 └─{xdg-permission-},8265 [1]+ 已殺死 cp -i /dev/cdrom mycd.iso