linux進程管理方法,linux進程管理內存管理,Linux專業知識四:Linux系統進程管理及查看內存

 2023-10-21 阅读 28 评论 0

摘要:本文主講Linux專業知識之Linux系統進程管理及查看內存的情況,以Redhat RHEL7操作系統為例。一、進程linux進程管理方法,程序與進程:程序是靜態的(文件),進程是動態的(運行的程序)。進程和線程:一個程序至少有一個進程,一個進程至少有一個線程。進

本文主講Linux專業知識之Linux系統進程管理及查看內存的情況,以Redhat RHEL7操作系統為例。

一、進程

linux進程管理方法,程序與進程:程序是靜態的(文件),進程是動態的(運行的程序)。

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

進程之間內存是獨立 。

linux文件系統有哪些,線程之間內存共享 ,高并發好一些 。 安全性差一些。

查看進程命令:pstree (顯示內容Redhat7版本之后 ,和Redhat6以前的版本不一樣):

e4ce5e38be478ce5d850bcf97d5377b1.png

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 :

0bb7a426be2c0505c4aae7c7599dc04b.png

標識和說明

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

b269737f30ce2a6159e079b503d02ab4.png

BSD顯示風格 和 標準顯示風格 : ps aux | grep bash 、 ps -el | grep bash

d3671ebb7a3f2970a52a897e1ddbb01a.png

三、top命令工具:實時顯示進程狀態

實時顯示進程狀態: top (動態顯示),主要用來查看CPU使用情況、內存使用情況、以及系統運行狀態等信息。前五行是整個系統的整體信息:

1.第一行顯示的內容(系統信息):

41d34de0495c39358a03ed43c9a2a13b.png

顯示和說明

22:04:01:當前時間

up 1 day, 16:46:系統運行時間

3 users:當前登錄用戶數

load average: 0.26, 0.22, 0.16:系統負載,即任務隊列的平均長度。 三個數值分別為 1分鐘、5分鐘、15分鐘前到現在的平均值。

2.第二行顯示的內容(進程信息,多個CPU的時候,這里可以是多行):

598ef00585e4372c8209eeaa89c88f2c.png

顯示和說明

Tasks: 256 total:進程總數

1 running:正在運行的進程數

255 sleeping:睡眠的進程數

0 stopped:停止的進程數

0 zombie:僵尸進程數

3.第三行顯示的內容(CPU信息,多個CPU的時候,這里可以是多行):

d5febb89a13e5d77d83f8ab425587482.png

顯示和說明

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交換區):

5433f8322f6dfab7e1ec7e75878934d1.png

四、top工具內部快捷鍵

當你使用 top 命令,查看內存時,可以使用一些快捷鍵:

快捷鍵和功能

空格鍵:手動刷新一下(默認3秒刷新一次)

M(大寫):按內存排序,內存使用高的排在上面

P(大寫):按CPU排序 ,CPU資源用得多的排在上面

h:幫助

q:退出

五、pgrep管理工具:查看單個進程

pgrep 用來查看指定進程,pgrep 相當于 ps aux | grep ,比如查看 httpd 服務:pgrep httpd

5cdc6ddb8b17eae99bf14976d888e3a0.png

你測試查看httpd時,應該先啟動httpd:service start httpd。如果沒有安裝httpd,則安裝httpd:yum -y install httpd。如果httpd 啟動失敗,80端口被占用:

e0ff9fd651fbcf4c603a2113448dc9dc.png

解決方法,有兩種方式可以使用:

第一種方法是修改httpd的端口:

vim /etc/httpd/conf/httpd.conf

a2b74bf86654bc06bfb57ff8ab8d71ed.png

然后就可以正常啟動httpd服務了:

service httpd start

第二種是停掉目前占用80端口的服務,讓出端口給httpd使用:

e369ee8871560fdb804169ded593fb77.png

六、pstree 管理工具:查看進程樹

用來查看 進程樹 : pstree

e4122f49b67535546772f4290e21c781.png

七、網絡管理

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。

8cda06f8203747ac8c8212df1d87989f.png

十、kill和killall 終止進程

可以通過kill來 殺死進程,也就是 結束進程。

列出kill的信號列表: kill -l

011509a00cebb28e2c19d967d98d27b2.png

殺死結束一個進程: kill 9 [進程號] 。

殺死一組進程: killall [進程名],比如:killall httpd 。

十一、進程的優先級管理

優先級取值范圍為(-20,19),越小優先級越高, 默認優先級是0。

指定進程優先級: nice -n 5 vim a.txt (使用優先級5執行vim a.txt產生的進程):

20236a8a95ca71de9987991b0909c27b.png

修改進程優先級: 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

這時候顯示:

b4655d9d1379e67b43d96b39e2ba53dc.png

先看men物理內存:

men內容

含義

total

62G 表示總的物理內存有62G

used

7.8G 表示使用了物理內存7.8G

free

36G 表示還有36G物理內存沒有使用

shared

棄用的內存

buff/cache

緩存區和cache緩存

available

一個程序可用的最大內存,這里是指虛擬的內存

swap 就是交換區的大小,swap物理上是磁盤,在內存不夠用時,swap被臨時用來充當內存,只是速度慢很多。

相關主題

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/157807.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息