16.3.1 【Linux】程序的觀察

既然程序這么重要,那么我們如何查閱系統上面正在運行當中的程序呢?利用靜態的 ps 或者是動態的 top,還能以 pstree 來查閱程序樹之間的關系。

ps :將某個時間點的程序運行情況擷取下來

僅觀察自己的 bash 相關程序: ps -l

系統整體的程序運行是非常多的,但如果使用 ps -l 則僅列出與你的操作環境 (bash) 有關的程序而已, 亦即最上層的父程序會是你自己的 bash 而沒有延伸到 systemd (后續會交待!) 這支程序去!那么 ps -l 出來的數據有哪些呢? 我們就來觀察看看:

F:代表這個程序旗標 (process flags),說明這個程序的總結權限,常見號碼有:

若為 4 表示此程序的權限為 root ;

若為 1 則表示此子程序僅進行復制(fork)而沒有實際執行(exec)。

S:代表這個程序的狀態 (STAT),主要的狀態有:

R (Running):該程序正在運行中;

S (Sleep):該程序目前正在睡眠狀態(idle),但可以被喚醒(signal)。

D :不可被喚醒的睡眠狀態,通常這支程序可能在等待 I/O 的情況(ex>打印)

T :停止狀態(stop),可能是在工作控制(背景暫停)或除錯 (traced) 狀態;

Z (Zombie):僵尸狀態,程序已經終止但卻無法被移除至內存外。

UID/PID/PPID:代表“此程序被該 UID 所擁有/程序的 PID 號碼/此程序的父程序 PID 號碼”

C:代表 CPU 使用率,單位為百分比;

PRI/NI:Priority/Nice 的縮寫,代表此程序被 CPU 所執行的優先順序,數值越小代表該程序越快被 CPU 執行。

ADDR/SZ/WCHAN:都與內存有關,ADDR 是 kernel function,指出該程序在內存的哪個部分,如果是個 running 的程序,一般就會顯示“ - ” / SZ 代表此程序用掉多少內存 /WCHAN 表示目前程序是否運行中,同樣的, 若為 - 表示正在運行中。

TTY:登陸者的終端機位置,若為遠端登陸則使用動態終端接口 (pts/n);

TIME:使用掉的 CPU 時間,注意,是此程序實際花費 CPU 運行的時間,而不是系統時間;

CMD:就是 command 的縮寫,造成此程序的觸發程序之指令為何。

所以你看到的 ps -l 輸出訊息中,他說明的是:“bash 的程序屬于 UID 為 0 的使用者,狀態為睡眠 (sleep), 之所以為睡眠因為他觸發了 ps (狀態為 run) 之故。此程序的 PID 為14836,優先執行順序為 80 , 下達 bash 所取得的終端接口為 pts/0 ,運行狀態為等待(wait) 。

觀察系統所有程序: ps aux

你會發現 ps -l 與 ps aux 顯示的項目并不相同!在 ps aux 顯示的項目中,各字段的意義為:

USER:該 process 屬于那個使用者帳號的?

PID :該 process 的程序識別碼。

%CPU:該 process 使用掉的 CPU 資源百分比;

%MEM:該 process 所占用的實體內存百分比;

VSZ :該 process 使用掉的虛擬內存量 (KBytes)

RSS :該 process 占用的固定的內存量 (KBytes)

TTY :該 process 是在那個終端機上面運行,若與終端機無關則顯示 ?,另外, tty1-tty6是本機上面的登陸者程序,若為 pts/0 等等的,則表示為由網絡連接進主機的程序。

STAT:該程序目前的狀態,狀態顯示與 ps -l 的 S 旗標相同 (R/S/T/Z)

START:該 process 被觸發啟動的時間;

TIME :該 process 實際使用 CPU 運行的時間。

COMMAND:該程序的實際指令為何?

一般來說,ps aux 會依照 PID 的順序來排序顯示,我們還是以 14836 那個 PID 那行來說明!該行的意義為“ root 執行的 bash PID 為 14836,占用了 0.1% 的內存容量百分比,狀態為休眠 (S),該程序啟動的時間為 8 月 4 號,因此啟動太久了, 所以沒有列出實際的時間點。且取得的終端機環境為 pts/0 。”與 ps aux 看到的其實是同一個程序。

通過 sshd 提供的網絡服務取得一個程序, 該程序提供 bash 給我使用,而我通過 bash 再去執行 ps axjf 。

top:動態觀察程序的變化

相對于 ps 是擷取一個時間點的程序狀態, top 則可以持續偵測程序運行的狀態!使用方式如下:

top的功能非常多,可以參考man top的內部說明文檔。

top是個挺不錯的程序觀察工具。不同于 ps 是靜態的結果輸出, top 這個程序可以持續的監測整個系統的程序工作狀態。 在默認的情況下,每次更新程序資源的時間為 5 秒,不過,可以使用 -d 來進行修改。 top 主要分為兩個畫面,上面的畫面為整個系統的資源使用狀態,基本上總共有六行,顯示的內容依序是:

第一行(top...):這一行顯示的信息分別為:

目前的時間,亦即是 00:53:59 那個項目;

開機到目前為止所經過的時間,亦即是 up 6:07, 那個項目;

已經登陸系統的使用者人數,亦即是 3 users, 項目;

系統在 1, 5, 15 分鐘的平均工作負載。代表的是 1, 5, 15 分鐘,系統平均要負責運行幾個程序(工作)的意思。 越小代表系統越閑置,若高于 1 得要注意你的系統程序是否太過繁復了!

第二行(Tasks...):顯示的是目前程序的總量與個別程序在什么狀態(running,sleeping, stopped, zombie)。

第三行(%Cpus...):顯示的是 CPU 的整體負載,每個項目可使用 ? 查閱。需要特別注意的是 wa 項目,那個項目代表的是 I/O wait, 通常你的系統會變慢都是 I/O 產生的問題比較大!因此這里得要注意這個項目耗用 CPU 的資源喔! 另外,如果是多核心的設備,可以按下數字鍵“1”來切換成不同 CPU 的負載率。

第四行與第五行:表示目前的實體內存與虛擬內存 (Mem/Swap) 的使用情況。 再次重申,要注意的是 swap 的使用量要盡量的少!如果 swap 被用的很大量,表示系統的實體內存實在不足!

第六行:這個是當在 top 程序當中輸入指令時,顯示狀態的地方。

至于 top 下半部分的畫面,則是每個 process 使用的資源情況。比較需要注意的是:

PID :每個 process 的 ID 啦!

USER:該 process 所屬的使用者;

PR :Priority 的簡寫,程序的優先執行順序,越小越早被執行;

NI :Nice 的簡寫,與 Priority 有關,也是越小越早被執行;

%CPU:CPU 的使用率;

%MEM:內存的使用率;

TIME+:CPU 使用時間的累加;

top 默認使用 CPU 使用率 (%CPU) 作為排序的重點,如果你想要使用內存使用率排序,則可以按下“M”, 若要回復則按下“P”即可。如果想要離開 top 則按下“ q ”吧!如果你想要將 top的結果輸出成為文件時, 可以這樣做:

可以幫助你將某個時段 top 觀察到的結果存成文件,可以用在你想要在系統背景下面執行。 由于是背景下面執行,與終端機的屏幕大小無關,因此可以得到全部的程序畫面。

pstree

如果找程序之間的相關性,這個pstree很好用。直接輸入 pstree 可以查到程序相關性,一般鏈接符號可以使用 ASCII碼即可,但有時因為語系問題會主動的以 Unicode 的符號來鏈接, 但因為可能終端機無法支持該編碼,或許會造成亂碼問題。因此可以加上 -A 選項來克服此類線段亂碼問題。

由 pstree 的輸出我們也可以很清楚的知道,所有的程序都是依附在 systemd 這支程序下面的。

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

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

相關文章

Keburnetes 存儲卷 volumes

K8S 的 存儲卷 volumes emptyDir 可實現Pod中的容器之間共享目錄數據,但emptyDir存儲卷沒有持久化數據的能力,存儲卷會隨著Pod生命周期結束而一起刪除 (一個pod中創建了docker1 docker2兩個容器,他們都掛載這個emptyDir&#xff0…

Gradle依賴管理:編譯時和運行時依賴的區別

🌷🍁 博主貓頭虎 帶您 Go to New World.?🍁 🦄 博客首頁——貓頭虎的博客🎐 🐳《面試題大全專欄》 文章圖文并茂🦕生動形象🦖簡單易學!歡迎大家來踩踩~🌺 &a…

【LeetCode】《LeetCode 101》第十一章:妙用數據結構

文章目錄 11.1 C STL11.2 數組448. 找到所有數組中消失的數字(簡單)48. 旋轉圖像(中等)74. 搜索二維矩陣(中等)240. 搜索二維矩陣 II(中等)769. 最多能完成排序的塊(中等…

java重寫與重載的區別

在Java中,重寫(Override)和重載(Overload)是兩種不同的概念: 重寫(Override): 重寫是指子類重新定義(覆蓋)了從父類繼承而來的方法。重寫要求子類…

ROSpider機器人評測報告

ROSpider機器人評測報告 最近入手了一款ROSpider六足仿生機器人,ROSpider是一款基于ROS 操作系統開發的智能視覺六足機器人。 外觀 外觀上ROSpider六足機器人如同名字一樣有六只機械腿,整體來看像一只六腿的蜘蛛。腿上的關節處用了明亮的橙黃色很是顯…

Redis實現消息的發布和訂閱

Redis實現消息的發布和訂閱 1、在springboot項目的pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schem…

cookie和session的區別,分布式環境怎么保存用戶狀態

1、cookie數據存放在客戶的瀏覽器上&#xff0c;session數據放在服務器上。 2、cookie不是很安全&#xff0c;別人可以分析存放在本地的COOKIE并進行COOKIE欺騙&#xff0c;考慮到安全應當使用session。 3、session會在一定時間內保存在服務器上。當訪問增多&#xff0c;會比…

js和cocos creator學習筆記

1.Javascript有哪些數據類型?舉例兩個最常見的內置對象數據類型? 常用的數據類型:Number,String,Boolean,Null,Undefined,Object 常見內置對象:Array,Function2.下面代碼輸出內容是什么? let a []; a[10] 10; console.log(a.length); console.log(a[0]); a[200] undefi…

arcpy創建基本要素:折線和多邊形

目錄 創建Polyline折線要素步驟一&#xff1a;創建空間參考步驟二&#xff1a;創建屬性類步驟三&#xff1a;創建字段步驟四&#xff1a;創建記錄并插入幾何信息 創建Polygon多邊形要素步驟一&#xff1a;創建空間參考&#xff08;同上&#xff09;步驟二&#xff1a;創建要素類…

Redis使用Lua腳本和Redisson來保證庫存扣減中的原子性和一致性

文章目錄 前言1.使用SpringBoot Redis 原生實現方式2.使用redisson方式實現3. 使用RedisLua腳本實現3.1 lua腳本代碼邏輯 3.2 與SpringBoot集成 4. Lua腳本方式和Redisson的方式對比5. 源碼地址6. Redis從入門到精通系列文章7. 參考文檔 前言 背景&#xff1a;最近有社群技術交…

C++——函數重載及底層原理

函數重載的定義 函數重載&#xff1a; 是函數的一種特殊情況&#xff0c;C允許在同一作用域重聲明幾個功能類似的同名函數&#xff0c;這些同名函數的形參列表&#xff08;參數個數或者類型&#xff0c;類型的順序&#xff09;不同&#xff0c;常用來處理實現功能類似數據結構…

C語言字符串拷貝函數詳解及示例代碼

目錄 簡介字符串拷貝函數 strcpy字符串拷貝函數 strcpy_s使用示例注意事項結束語 1. 簡介 字符串拷貝是C語言中常用的操作之一。當需要將一個字符串復制到另一個字符串數組中時&#xff0c;可以使用字符串拷貝函數來實現。C語言提供了多種字符串拷貝函數&#xff0c;其中最常…

春秋云鏡 CVE-2021-41947

春秋云鏡 CVE-2021-41947 Subrion CMS v4.2.1 存在sql注入 靶標介紹 Subrion CMS v4.2.1 存在sql注入。 啟動場景 漏洞利用 exp http://localhost/panel/visual-mode.json?getaccess&typeblocks UNION ALL SELECT username, password FROM sbr421_members -- -&o…

【需求輸出】流程圖輸出

文章目錄 1、什么是流程圖2、繪制流程圖的工具和基本要素3、流程圖的分類和應用場景4、如何根據具體場景輸出流程圖 1、什么是流程圖 2、繪制流程圖的工具和基本要素 3、流程圖的分類和應用場景 4、如何根據具體場景輸出流程圖

Dubbo1-架構的演變

分布式系統上的相關概念 項目&#xff1a;傳統項目、互聯網項目 傳統項目&#xff1a; 一般為公司內部使用&#xff0c;或者小群體小范圍的使用&#xff0c;一般不要求性能&#xff0c;美觀&#xff0c;并發等 互聯網項目的特點&#xff1a; 1.用戶多 2.流量大&#xff0c;并…

用python來爬取某魚的商品信息(2/2)

目錄 上一篇文章 本章內容 設置瀏覽器為運行結束后不關閉&#xff08;可選&#xff09; 定位到搜索框的xpath地址 執行動作 獲取cookie 保存為json文件 修改cookie的sameSite值并且導入cookie 導入cookie&#xff08;出錯&#xff09; 導入cookie&#xff08;修改后&…

Android Ble藍牙App(五)數據操作

Ble藍牙App&#xff08;五&#xff09;數據操作 前言正文一、操作內容處理二、讀取數據① 概念② 實操 三、寫入數據① 概念② 實操 四、打開通知一、概念二、實操三、收到數據 五、源碼 前言 關于低功耗藍牙的服務、特性、屬性、描述符都已經講清楚了&#xff0c;而下面就是使…

電腦系統重裝日記

重裝原因 電腦C盤幾乎爆炸故重裝系統一清二白 此片原因 記錄重裝過程&#xff0c;強調一些要注意的點&#xff0c;以防日后重裝。 重裝過程 1.清空電腦文件后重啟&#xff0c;電腦冒藍光&#xff0c;一直藍屏反復重啟&#xff0c;故只能重裝系統以解難題。 2.準備一個U盤&…

設計HTML5文檔結構

定義清晰、一致的文檔結構不僅方便后期維護和拓展&#xff0c;同時也大大降低了CSS和JavaScript的應用難度。為了提高搜索引擎的檢索率&#xff0c;適應智能化處理&#xff0c;設計符合語義的結構顯得很重要。 1、頭部結構 在HTML文檔的頭部區域&#xff0c;存儲著各種網頁元…

Python Opencv實踐 - 圖像屬性相關

import numpy as np import cv2 as cv import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) plt.imshow(img[:,:,::-1])#像素操作 pixel img[320,370] print(pixel)#只獲取藍色通道的值 pixel_blue img[320,370,0]…