Linux 學習筆記(10)

十、 進程管理
進程就是運行中的程序,一個運行著的程序,可能有多個進程。 比如 LinuxSir.Org 所用的 WWW
服務器是 apache 服務器,當管理員啟動服務后,可能會有好多人來訪問,也就是說許多用戶來同時請
httpd 服務, apache 服務器將會創建有多個 httpd 進程來對其進行服務。
1 進程分類
進程一般分為交互進程、批處理進程和守護進程三類。
值得一提的是守護進程總是活躍的,一般是后臺運行,守護進程一般是由系統在開機時通過腳本自
動激活啟動或超級管理用戶 root 來啟動。比如在 Fedora Redhat 中,我們可以定義 httpd 服務器的啟
動腳本的運行級別,此文件位于 /etc/init.d 目錄下,文件名是 httpd /etc/init.d/httpd 就是 httpd 服務器
的守護程序,當把它的運行級別設置為 3 5 時,當系統啟動時,它會跟著啟動。
[root@localhost ~]# chkconfig --level 35 httpd on 由于守護進程是一直運行著的,所以它所處的狀態是等待請求處理任務。比如,我們是不是訪問
LinuxSir.Org LinuxSir.Org httpd 服務器都在運行,等待著用戶來訪問,也就是等待著任務處理。
2 、進程的屬性
進程 ID PID) :是唯一的數值,用來區分進程;
父進程和父進程的 ID PPID)
啟動進程的用戶 ID UID )和所歸屬的組( GID );
進程狀態:狀態分為運行 R 、休眠 S 、僵尸 Z
進程執行的優先級;
進程所連接的終端名;
進程資源占用:比如占用資源大小(內存、 CPU 占用量);
3 、父進程和子進程
他們的關系是管理和被管理的關系,當父進程終止時,子進程也隨之而終止。但子進程終止,父進
程并不一定終止。比如 httpd 服務器運行時,我們可以殺掉其子進程,父進程并不會因為子進程的終止
而終止。
在進程管理中,當我們發現占用資源過多,或無法控制的進程時,應該殺死它,以保護系統的穩定
安全運行
4 、進程管理命令
4.1 ps
ps 為我們提供了進程的一次性的查看,它所提供的查看結果并不動態連續的;如果想對進程時間監控,
應該用 top 工具。
4.1.1 ps 的參數說明:
ps 提供了很多的選項參數,常用的有以下幾個;
l 長格式輸出;
u 按用戶名和啟動時間的順序來顯示進程;
j 用任務格式來顯示進程;
f 用樹形格式來顯示進程;
a 顯示所有用戶的所有進程(包括其它用戶);
x 顯示無控制終端的進程;
r 顯示運行中的進程;
ww 避免詳細參數被截斷;
我們常用的選項是組合是 aux lax ,還有參數 f 的應用;
ps aux lax 輸出的解釋;
USER 表示啟動進程用戶。 PID 表示進程標志號。 %CPU 表示運行該進程占用 CPU 的時間與該進
程總的運行時間的比例。 %MEM 表示該進程占用內存和總內存的比例。 VSZ 表示占用的虛擬內存大
小,以 KB 為單位。 RSS 為進程占用的物理內存值,以 KB 為單位。 TTY 表示該進程建立時所對應的
終端, "?" 表示該進程不占用終端。 STAT 表示進程的運行狀態,包括以下幾種代碼: D ,不可中斷的
睡眠; R ,就緒(在可運行隊列中); S ,睡眠; T ,被跟蹤或停止; Z ,終止(僵死)的進程, Z 存在,但暫時無法消除; W ,沒有足夠的內存分頁可分配; < 高優先序的進程; N ,低優先序的進程;
L ,有內存分頁分配并鎖在內存體內(實時系統或 I/O )。 START 為進程開始時間。 TIME 為執行的時
間。 COMMAND 是對應的命令名。
4.1.2 ps 應用舉例
實例一: ps aux 最常用
[root@localhost ~]# ps -aux |more
可以用 | 管道和 more 連接起來分頁查看;
[root@localhost ~]# ps aux > ps001.txt
[root@localhost ~]# more ps001.txt
這里是把所有進程顯示出來,并輸出到 ps001.txt 文件,然后再通過 more 來分頁查看;
實例二:和 grep 結合,提取指定程序的進程;
[root@localhost ~]# ps aux |grep httpd
root 4187 0.0 1.3 24236 10272 ? Ss 11:55 0:00 /usr/sbin/httpd
apache 4189 0.0 0.6 24368 4940 ? S 11:55 0:00 /usr/sbin/httpd
apache 4190 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4191 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4192 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4193 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4194 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4195 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4196 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
root 4480 0.0 0.0 5160 708 pts/3 R+ 12:20 0:00 grep httpd
實例二:父進和子進程的關系友好判斷的例子
[root@localhost ~]# ps auxf |grep httpd
root 4484 0.0 0.0 5160 704 pts/3 S+ 12:21 0:00 \_ grep
httpd
root 4187 0.0 1.3 24236 10272 ? Ss 11:55 0:00 /usr/sbin/httpd
apache 4189 0.0 0.6 24368 4940 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4190 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4191 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4192 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4193 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4194 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4195 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4196 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
這里用到了 f 參數;父與子關系一目了然;
例三:找出消耗內存最多的前 10 名進程
# ps -auxf | sort -nr -k 4 | head -10
例四:找出使用 CPU 最多的前 10 名進程
# ps -auxf | sort -nr -k 3 | head -10
4.2 pstree
功能: pstree 命令列出當前的進程,以及它們的樹狀結構。
格式: pstree [ 選項 ] [pid|user]
主要選項如下: -a :顯示執行程序的命令與完整參數。
-c :取消同名程序,合并顯示。
-h :對輸出結果進行處理,高亮顯示正在執行的程序。
-l :長格式顯示。
-n :以 PID 大小排序。
-p :顯示 PID
-u :顯示 UID 信息。
-G :使用 VT100 終端編碼顯示。
-U :使用 UTF-8 Unicode )編碼顯示。
說明:使用 ps 命令得到的數據精確,但數據龐大,這一點對掌握系統整體概況來說是不容易的。 pstree
正好可以彌補這個缺憾。它能將當前的執行程序以樹狀結構顯示。 pstree 支持指定特定程序( PID
或使用者( USER )作為顯示的起始。
應用實例如下。
進程啟動的時候可能會產生自己的一個子進程。運行 pstree 命令就可以很容易地看到這些信息。以超
級用戶權限運行 pstree
命令對程序名稱相同的會自動合并,所有 "|-httpd---8*[httpd]" 即表示系統中有 8 httpd 進程產生的
子進程。
4.3 top
top 命令用來顯示系統當前的進程狀況。
格式: top [ 選項 ]
主要選項如下。
d :指定更新的間隔,以秒計算。
q :沒有任何延遲的更新。如果使用者有超級用戶,則 top 命令將會以最高的優先序執行。
c :顯示進程完整的路徑與名稱。
S :累積模式,會將已完成或消失的子進程的 CPU 時間累積起來。 s :安全模式。
i :不顯示任何閑置( Idle )或無用( Zombie )的進程。
n :顯示更新的次數,完成后將會退出 top
說明: top 命令和 ps 命令的基本作用是相同的,都顯示系統當前的進程狀況。但是 top 是一個動態顯
示過程,即可以通過用戶按鍵來不斷刷新當前狀態。這里結合下圖來說明它給出的信息。
第一行表示的項目依次為當前時間、系統啟動時間、當前系統登錄用戶數目、平均負載。
第二行顯示的是 Tasks: 114 total 進程總數、 2 running 正在運行的進程數、 110 sleeping 睡眠的進程數、
0 stopped 停止的進程數、 2 zombie 僵尸進程數
第三行顯示的是目前 CPU 的使用情況, Cpu(s): 0.3% us 用戶空間占用 CPU 百分比、 1.0% sy 內核空間
占用 CPU 百分比、 0.0% ni 用戶進程空間內改變過優先級的進程占用 CPU 百分比、 98.7% id
CPU 百分比、 0.0% wa 等待輸入輸出的 CPU 時間百分比、 0.0% hi 0.0% si
第四行顯示物理內存的使用情況, Mem: 191272k total 物理內存總量、 173656k used 使用的物理內存
總量、 17616k free 空閑內存總量、 22052k buffers 用作內核緩存的內存量
第五行顯示交換分區使用情況, Swap: 192772k total 交換區總量、 0k used 使用的交換區總量、 192772k
free 空閑交換區總量、 123988k cached 緩沖的交換區總量、內存中的內容被換出到交換區,
而后又被換入到內存,但使用過的交換區尚未被覆蓋,該數值即為這些內容已存在于內存中的
交換區的大小。相應的內存再次被換出時可不必再對交換區寫入。
第六行顯示的項目最多,下面列出了詳細解釋。
PID Process ID ):進程標志號,是非零正整數。 USER :進程所有者的用戶名。 PR :進程的優先級別。
NI :進程的優先級別數值。 VIRT :進程占用的虛擬內存值。 RES :進程占用的物理內存值。 SHR :進程
使用的共享內存值。 STAT :進程的狀態,其中 S 表示休眠, R 表示正在運行, Z 表示僵死狀態, N
示該進程優先值是負數。 %CPU :該進程占用的 CPU 使用率。 %MEM :該進程占用的物理內存和總內 存的百分比。 TIME :該進程啟動后占用的總的 CPU 時間。 COMMAND :進程啟動的啟動命令名稱,如
果這一行顯示不下,進程會有一個完整的命令行。
top 命令使用過程中,還可以使用一些交互的命令來完成其他參數的功能。這些命令是通過快捷鍵啟
動的。
< 空格 > :立刻刷新。
A 分類顯示系統不同資源的使用大戶。有助于快速識別系統中資源消耗多的任務。
f 添加刪除所要顯示欄位 .
o 調整所要顯示欄位的順序 .
r 調整一個正在運行的進程 Nice .
k 結束一個正在運行的進程 .
z 彩色 / 黑白顯示開關
P :根據 CPU 使用大小進行排序。
T :根據時間、累計時間排序。
q :退出 top 命令。
m :切換顯示內存信息。
t :切換顯示進程和 CPU 狀態信息。
c :切換顯示命令名稱和完整命令行。
M :根據使用內存大小進行排序。
W :將當前設置寫入~ /.toprc 文件中。這是寫 top 配置文件的推薦方法。
可以看到, top 命令是一個功能十分強大的監控系統的工具,對于系統管理員而言尤其重要。但是,
它的缺點是會消耗很多系統資源。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719405.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719405.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719405.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

QT debug編譯失敗:xxx/bin/ld.exe: cannot find -lxxd1

原因&#xff1a;由于編譯時&#xff0c;使用debug模式下&#xff0c;動態庫沒有對應的lxxd1中的xx庫 解決方案1&#xff1a;改為release編譯&#xff1b; 解決方案2&#xff1a;在引用的三方pri文件中&#xff0c;去掉多余的d #修改前 if(!debug_and_release|build_pass):CON…

沃德的背包

題目描述 沃德進入源碼世界的路上有很多寶石&#xff0c;可是沃德的背包只能背總重量不超過m的寶石&#xff0c;路上一共有n個寶石&#xff0c;每個寶石的重量為wi&#xff0c;請你幫沃德選擇盡量多的寶石裝進背包&#xff0c;請注意寶石的總重量不超過m。 輸入描述 第一行輸…

Django官網項目 二

官網地址&#xff1a;Writing your first Django app, part 2 | Django documentation | Django 創建模組&#xff1a; 注冊model &#xff08;bug&#xff1a;沒有加后面的逗號&#xff09; 在manage.py 的目錄下&#xff1a; python manage.py makemigrations polls pyth…

redis09 集群(cluster)

思維草圖 為什么要使用集群 單臺redis內存容量的限制單臺redis并發寫量太大有性能瓶頸 redis集群認識 redis集群是對redis的水平擴容&#xff0c;即啟動N個redis節點&#xff0c;將整個數據分布存儲在這個N個節點中&#xff0c;每個節點存儲總數據的1/N。 如下圖&#xff1…

C++ 根據公式計算橢圓任意點到中心的距離

#include <iostream> using namespace std;double fact(int x) //定義階乘函數。注意是double類型 {double y x; //注意是double類型for (int i x-1; i > 0; i--)y * i;return y; };double My_sin(int x) //定義sin函數。注意是double類型 {double y 0; //注意是do…

【視頻圖像取證篇】Amped FIVE專業法醫圖像和視頻增強軟件之模糊圖像去隔行功能

【視頻圖像取證篇】Amped FIVE專業法醫圖像和視頻增強軟件之模糊圖像去隔行功能 法醫圖像和視頻增強軟件&#xff0c;專業又強大&#xff01;&#xff01;&#xff01;超過 140 種過濾器和工具&#xff0c;用于分析、恢復和增強數字圖像和視頻。Amped FIVE能夠穩定抖動的視頻&…

Linux:ansible-playbook配置文件(劇本)(進階)

Linux&#xff1a;ansible-playbook配置文件&#xff08;劇本&#xff09;_ansible-playbook -i參數-CSDN博客https://blog.csdn.net/w14768855/article/details/132579492?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170930036016800215061982%2522%252C%2522s…

LaTeX排版論文的常見問題匯總(持續更新中)

文章目錄 LaTeX排版論文的常見問題匯總&#xff08;持續更新中&#xff09;1.如何上傳期刊或會議提供的LaTeX模板&#xff1f;2.模板中各文件的說明3.LaTeX中如何設置字體大小&#xff1f;3.1如何設置表格中的字體大小&#xff1f;3.2如何設置表格、圖片標題的字體大小&#xf…

A/D轉換

硬件電路模型 模數轉換代碼 main.c #include <REGX52.H> #include "LCD1602.h" #include "Delay.h" #include "XPT2046.h"unsigned int ADValue; int main(){LCD_Init();LCD_ShowString(1,1,"ADJ NTC RG");while(1){ADValue …

什么是Vue的服務端渲染(SSR)?它有什么作用?

Vue的服務端渲染&#xff08;SSR&#xff09;是指將Vue組件在服務器端進行渲染&#xff0c;然后將已經渲染好的頁面返回給瀏覽器&#xff0c;相比于傳統的客戶端渲染&#xff0c;SSR可以更好地優化SEO和加速首屏加載速度。在傳統的客戶端渲染中&#xff0c;瀏覽器需要加載所有的…

【MySQL系列】在 MacOS 上安裝 MySQL

在 MacOS 上有兩種方式安裝 MySQL 服務器&#xff1a;通過 brew 安裝和通過安裝包安裝。 文章目錄 1、通過 brew 安裝 MySQL1.1、安裝 MySQL1.2、啟動 MySQL 服務器1.3、配置 MySQL 服務器1.4、MySQL 服務器管理命令 2、通過安裝包安裝 MySQL2.1、下載安裝包2.2、安裝 MySQL2.3…

深入理解快速排序算法:從原理到實現

目錄 1. 引言 2. 快速排序算法原理 3. 快速排序的時間復雜度分析 4. 快速排序的應用場景 5. 快速排序的優缺點分析 5.1 優點&#xff1a; 5.2 缺點&#xff1a; 6. Java、JavaScript 和 Python 實現快速排序算法 6.1 Java 實現&#xff1a; 6.2 JavaScript 實現&#…

30、類和接口

文章目錄 接口概念接口和類之間有何關系&#xff1f; 可以使用接口來約束類接口繼承接口接口還可以繼承類接口為什么可以繼承類內層原因&#xff1a;接口為什么可以繼承類 用得出的結論解釋最初的demo接口繼承類的一些限制 接口概念 接口&#xff08;Interfaces&#xff09;可…

【大廠AI課學習筆記NO.61】環境部署的選擇

主要是選擇單機和分布式、生產和開發環境的規劃等。 開發環境、測試環境、預發布環境和生產環境是軟件開發和部署過程中常見的幾個環境&#xff0c;它們各自的定義、區別、聯系以及實現的關鍵技術如下&#xff1a; 1. 開發環境&#xff08;Development Environment&#xff09…

Ai 快捷鍵學習

Ai 快捷鍵學習 Ait 鼠標滾輪 實現頁面的放大和縮小 空格鼠標左鍵 抓手工具 ctrl r 調出標尺&#xff0c;可以通過標尺來對其圖片 ctrl &#xff1b; 隱藏標尺 ctrl ‘ 調用網格標尺 再按一次就是取削 ctrl shiftz 反向撤回 tab 快速全屏 ctsls / ctrlshift…

完全解析淘寶天貓詳情接口API:購物小白也能秒變高手

在如今的電商領域中&#xff0c;淘寶和天貓是最為重要和熱門的平臺之一。作為購物平臺的用戶&#xff0c;我們通常只是瀏覽商品的頁面&#xff0c;點擊購買和支付&#xff0c;卻未能深入了解背后的技術信息。然而&#xff0c;淘寶天貓詳情接口API的了解和運用&#xff0c;聯訊數…

力扣hot4--雙指針

題目&#xff1a; 雙指針想法&#xff1a; i 指針在數組不為 0 的地方停留&#xff0c;j 指針在每個地方停留&#xff0c;依次交換 i 和 j 指針。當 i 指針遍歷完所有數組元素時&#xff0c;j 指針指向的元素及后面的元素都為0。 代碼如下&#xff1a; C版本 class Solution …

冒泡、插入、希爾、選擇、堆排序、快速排序(附源碼)

目錄 插入排序&#xff1a; 核心思想&#xff1a; 時間復雜度&#xff1a; 冒泡排序&#xff1a; 核心思想&#xff1a; 時間復雜度&#xff1a; 希爾排序&#xff1a; 核心思想&#xff1a; 時間復雜度&#xff1a; 選擇排序&#xff1a; 核心思想&#xff1a; 時間…

告別手動填寫邀請碼,這款App數據統計工具幫你輕松實現

在移動互聯網時代&#xff0c;App的推廣和運營已成為各大企業的必修課。然而&#xff0c;面對錯綜復雜的推廣渠道和浩如煙海的數據&#xff0c;如何精準地追蹤用戶來源、優化推廣策略&#xff0c;一直是困擾著運營者的難題。今天&#xff0c;我們就來聊聊一款能夠幫助你輕松解決…

[C++核心編程](七):類和對象——運算符重載*

目錄 四則運算符重載 左移運算符重載 遞增運算符重載 賦值運算符重載 關系運算符重載 函數調用運算符重載 對已有的運算符重新進行定義&#xff0c;賦予其另一種功能&#xff0c;以適應不同的數據類型 四則運算符重載 對自定義數據類型實現四則運算&#xff08;加減乘除&…