時間:2018-05-30 姓名:魏文應
一、進程
- 程序與進程:程序是靜態(tài)的(文件),進程是動態(tài)的(運行的程序)。
- 進程和線程:一個程序至少有一個進程,一個進程至少有一個線程。
- 進程之間內存是獨立 。
- 線程之間內存共享 ,高并發(fā)好一些 。 安全性差一些。
查看進程命令:pstree (顯示內容Redhat7版本之后 ,和Redhat6以前的版本不一樣):
- 進程樹
程序和進程的區(qū)別
程序是靜態(tài)的,它只是一組指令的集合,不具有任何的運行意義。本身作為一次軟件資源長期保存;而進程是程序執(zhí)行的動態(tài)過程.它是動態(tài)概念,有一定的生命周期,它是動態(tài)產(chǎn)生和消亡的。
進程和程序并不是一一對應的關系,相同的程序運行在不同的數(shù)據(jù)集上就是不同的進程;一個程序可以由多個進程公用
進程還具有并發(fā)性和交往性,而程序卻是封閉的。
進程和線程的區(qū)別
一個進程可以擁有多個線程,而一個線程同時只能被一個進程所擁有。
線程不能單獨執(zhí)行,但是每一個線程都有程序的入口、執(zhí)行序列以及程序出口。它必須組成進程才能被執(zhí)行。
進程屬性
- 進程ID(PID): 是唯一的數(shù)值,用來區(qū)分進程。
- 父進程的ID(PPID): 啟動進程的用戶ID(UID)和所歸屬的組(GID)。
- 進程狀態(tài): 狀態(tài)分為運行R、休眠S、僵尸Z。
- 進程執(zhí)行的優(yōu)先級。
- 進程所連接的終端名:以哪個終端登錄的。
- 進程資源占用: 比如占用資源大?。▋却?、CPU占用量)。
二、進程管理工具:ps
進程查看命令:ps 。常用參數(shù)(選項):
| 參數(shù) | 說明 |
|---|---|
| -a | 顯示所有用戶的進程 |
| u | 顯示用戶名和啟動時間 |
| -x | 顯示沒有控制終端的進程 |
| -e | 顯示所有進程,包括沒有控制終端的進程 |
| -l | 長格式顯示,詳細信息顯示 |
| -w | 寬行顯示,可以使用多個w進行加寬顯示 |
我們常用的選項組合是 -aux 。
查看進程信息
查看隸屬于 自己進程 詳細信息,也就是當前用戶的進程(不包括其它用戶啟動的進程)。
顯示 用戶名 和 啟動時間:
ps u:- ps u 命令顯示的信息
| 標識 | 說明 |
|---|---|
| USER | 用戶名 |
| PID | 程進ID |
| %CPU | 占用CPU時間和總時間的百分比 |
| %MEM | 占用內存與系統(tǒng)內存總量的百分比 |
| VSZ | 進程的虛擬大小 |
| RSS | 駐留集的大小,也可以理解為內存中頁的數(shù)量 |
| TTY | 進程啟動的終端,也就是這個進程是由哪個終端啟動的 |
| STAT | 進程當前狀態(tài)(S休眠狀態(tài),D不可中斷的休眠狀態(tài),R運行狀態(tài),Z僵死狀態(tài),T停止) |
| START | 進程的啟動時間,指出進程是什么時候啟動的 |
| TIME | 進程自從啟動以后啟用CPU的總時間 |
| COMMAND/CMD | 進程的命令名 |
| UID | 用戶的id |
| PPID | 父進程的進程號 |
| NI | 進程優(yōu)先級 |
其中 STAT 除了顯示進程當前狀態(tài),還經(jīng)常 追加顯示 下面的一些其它參數(shù):
| 狀態(tài)符號 | 說明 |
|---|---|
| < | 高優(yōu)先級 |
| N | 低優(yōu)先級 |
| L | 有些頁被鎖進內存 |
| S | 包含子進程 |
| + | 位于后臺的進程組 |
| l | 多線程 |
**單獨顯示某個進程:ps -l | grep bash
- 單獨顯示某個進程
BSD顯示風格 和 標準顯示風格 :
ps aux | grep bash、ps -el | grep bash- 顯示風格
三、top命令工具:實時顯示進程狀態(tài)
實時顯示進程狀態(tài): top (動態(tài)顯示),主要用來查看CPU使用情況、內存使用情況、以及系統(tǒng)運行狀態(tài)等信息。前五行是整個系統(tǒng)的整體信息:
第一行顯示的內容(系統(tǒng)信息):
- top命令內容意思第一行
| 顯示 | 說明 |
|---|---|
| 22:04:01 | 當前時間 |
| up 1 day, 16:46 | 系統(tǒng)運行時間 |
| 3 users | 當前登錄用戶數(shù) |
| load average: 0.26, 0.22, 0.16 | 系統(tǒng)負載,即任務隊列的平均長度。 三個數(shù)值分別為 1分鐘、5分鐘、15分鐘前到現(xiàn)在的平均值。 |
第二行顯示的內容(進程信息,多個CPU的時候,這里可以是多行):
- top命令內容意思第二行
| 顯示 | 說明 |
|---|---|
| Tasks: 256 total | 進程總數(shù) |
| 1 running | 正在運行的進程數(shù) |
| 255 sleeping | 睡眠的進程數(shù) |
| 0 stopped | 停止的進程數(shù) |
| 0 zombie | 僵尸進程數(shù) |
第三行顯示的內容(CPU信息,多個CPU的時候,這里可以是多行):
- top命令內容意思第三行
| 顯示 | 說明 |
|---|---|
| 6.6.0% us | 系統(tǒng)用戶進程使用CPU百分比 |
| 4.3% sy | 內核中的進程占用CPU百分比 |
| 0.0% ni | 用戶進程空間內改變過優(yōu)先級的進程占用CPU百分比 |
| 89.1% id | 空閑CPU百分比 |
| 0.0%wa | IO等待占用CPU的百分比 |
| 0.0%hi | 硬中斷(Hardware IRQ)占用CPU的百分比 |
| 0.1%si | 軟中斷(Software Interrupts)占用CPU的百分比 |
| 0.0%st | Steal Time 切片時間CPU占比。CPU資源是切換使用的,比如這個進程用一會,那個進程用一會。Steal Time 反映虛擬CPU等待實際CPU響應的情況,如果等待時間為100%時,說明虛擬CPU得不到實際CPU分配的資源,這是一種糟糕的情況。當系統(tǒng)運行在虛擬機上時,這個值可以關注。 |
- 第四、五行顯示的內容(物理內存和swap交換區(qū)):
- top命令內容意思第四、五行
top工具內部快捷鍵
當你使用 top 命令,查看內存時,可以使用一些快捷鍵:
| 快捷鍵 | 功能 |
|---|---|
| 空格鍵 | 手動刷新一下(默認3秒刷新一次) |
| M(大寫) | 按內存排序,內存使用高的排在上面 |
| P(大寫) | 按CPU排序 ,CPU資源用得多的排在上面 |
| h | 幫助 |
| q | 退出 |
五、pgrep管理工具:查看單個進程
pgrep 用來查看指定進程,pgrep 相當于 ps aux | grep ,比如查看 httpd 服務:pgrep httpd
- pgrep查看進程
你測試查看httpd時,應該先啟動httpd:service start httpd。如果沒有安裝httpd,則安裝httpd:yum -y install httpd。如果httpd 啟動失敗,80端口被占用:
- httpd80端口被占用
解決方法,有兩種方式可以使用:
-
第一種方法是修改httpd的端口:
vim /etc/httpd/conf/httpd.conf
- httpd端口修改
然后就可以正常啟動httpd服務了:
service httpd start
第二種是停掉目前占用80端口的服務,讓出端口給httpd使用:
- 查看哪個服務占用了80端
六、pstree 管理工具:查看進程樹
用來查看 進程樹 : pstree
- 進程樹
七、網(wǎng)絡管理
使用netstat工具
netstat 命令用于顯示各種網(wǎng)絡相關信息,如網(wǎng)絡連接,路由表,接口狀態(tài) 。
- 常用命令帶參情況
netstat -anptu。
| 參數(shù) | 說明 |
|---|---|
| -a或–all | 顯示所有連接中的接口 |
| -c或–continuous | 持續(xù)列出網(wǎng)絡狀態(tài) |
| -C或–cache | 顯示路由器配置的快取信息 |
| -e或–extend | 顯示網(wǎng)絡其他相關信息 |
| -F或–fib | 顯示FIB |
| -g或–groups | 顯示多重廣播功能群組組員名單 |
| -h或–help | 在線幫助 |
| -i或–interfaces | 顯示網(wǎng)絡界面信息表單 |
| -l或–listening | 顯示監(jiān)控中的服務器的接口 |
| -M或–masquerade | 顯示偽裝的網(wǎng)絡連線 |
| -n或–numeric | 直接使用IP地址,而不通過域名服務器 |
| -N或–netlink或–symbolic | 顯示網(wǎng)絡硬件外圍設備的符號連接名稱 |
| -o或–timers | 顯示計時器 |
| -p或–programs | 顯示正在使用接口的程序識別碼和程序名稱 |
| -r或–route | 顯示Routing Table |
| -s或–statistice | 顯示網(wǎng)絡工作信息統(tǒng)計表 |
| -t或–tcp | 顯示TCP傳輸協(xié)議的連接狀況 |
| -u或–udp | 顯示UDP傳輸協(xié)議的連接狀況 |
| -v或–verbose | 顯示指令執(zhí)行過程 |
| -V或–version | 顯示版本信息 |
| -w或–raw | 顯示RAW傳輸協(xié)議的連線狀況 |
| -x或–unix | 此參數(shù)的效果和指定”-A unix”參數(shù)相同 |
| –ip或–inet | 此參數(shù)的效果和指定”-A inet”參數(shù)相同 |
八、虛擬文件系統(tǒng) /proc /sys
Linux一切皆文件,設備(文件)可以通過讀寫來操作。
/proc:在內存中的系統(tǒng)進程信息
比如,查看cpu信息:cat /proc/cpuinfo。在比如查看內存信息 : cat /proc/meminfo 。
-
開啟內核轉發(fā)功能: linux可以作為一個路由器使用。我們可以開啟路由轉發(fā)功能,并設置iptables。
往/proc/sys/net/ipv4/ip_forward這個文件中寫入1,就開啟了ip路由功能。
echo "1" >/proc/sys/net/ipv4/ip_forward /sys :系統(tǒng)內核以及驅動的信息。
九、Linux后臺進程與前臺進程
Linux后臺進程:
- 守護進程(Daemon),是運行在后臺的一種特殊進程。
- 守護的意思就是不受終端控制;
- Linux的大多數(shù)服務器就是用守護進程實現(xiàn)的,比如,Web服務器httpd等。
Linux前臺進程:
- 用戶使用的有控制終端的進程。
進程的前臺與后臺切換
讓命令后臺運行:
[命令] &。 比如:sleep 100 &(&這個符號用在命令的最后,讓sleep 100這個命令后臺執(zhí)行)。暫停前臺命令,讓其后臺掛起:
ctrl鍵 + z鍵。查看所有后臺進程:
jobs(如果顯示進程號PID,則jobs -l)。后臺進程調到前臺運行:
fg。啟動運行后臺暫停的進程,在后臺運行:
bg。- 進程的前臺與后臺切換
十、kill和killall 終止進程
可以通過kill來 殺死進程,也就是 結束進程。
列出kill的信號列表:
kill -l- kill信號列表
殺死結束一個進程:
kill 9 [進程號]。殺死一組進程:
killall [進程名],比如:killall httpd。
十一、進程的優(yōu)先級管理
優(yōu)先級取值范圍為(-20,19),越小優(yōu)先級越高, 默認優(yōu)先級是0。
指定進程優(yōu)先級: nice -n 5 vim a.txt (使用優(yōu)先級5執(zhí)行vim a.txt產(chǎn)生的進程):
- 進程優(yōu)先級
修改進程優(yōu)先級: nice -10 29155 (-10是進程優(yōu)先級,29155是進程PID)。
十二、screen 命令工具:終端命令行暫存
screen 有什么用? 比如,你在命令行終端執(zhí)行 ping www.baidu.com ,這時你關閉了終端命令行,那么 ping www.baidu.com 進程也會被終止,被殺死了。因為ping這個操作是由 終端派生的進程,終端進程退出了,子進程ping也會被殺死。但你不想ping結束呢?就可以用screen工具。
創(chuàng)建新窗口: screen 或者 screen -S name01 (“-S name01” 是給窗口命名,讓你容易識別)。
窗口后臺運行: 按下Ctrl鍵 + A鍵 + D鍵 。讓screen創(chuàng)建的窗口后臺運行,我們返回主窗口做其它操作。
查看srceen列表: screen -list 或者 screen -ls
切換到之前分離的窗口: screen -r name01(輸入窗口名稱或者ID號都可以)。














