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