進程監控類命令

来源:https://www.cnblogs.com/fengciaimei/archive/2020/05/10/12864565.html
-Advertisement-
Play Games

liunx中各種監控工具,量大.本篇全是命令介紹,筆者把各個命令的都實驗一遍,給同學們看看. ...


進程監控類命令

 

本篇全是命令介紹,筆者把各個命令的都實驗一遍,給同學們看看.

 

一. PSTREE命令

pstree - display a tree of processes

選項:

  -p 顯示進程的PID

  -T 隱藏線程信息

  -u 顯示切換過程

  -H PID 高亮顯示指定PID進程的父進程

示例:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二. PS命令

ps - report a snapshot of the current processes.

選項:

PS有三種風格的選項寫法:

  BSD風格寫法 ps aux

  UNIX風格寫法 ps -ef

  GNU風格寫法 ps --pid PID

 

BSD風格選項:

  a 顯示所有與終端有關的進程

  x 顯示所有與終端無關的進程

  u 顯示進程所有者相關的信息

  f 命令列把相關的進程顯示成進程樹

  k 對屬性進行排序,屬性前加上-表示倒序

  o 選擇顯示的欄位pid cmd psr ni(nice) pri rtprio tid class %cpu %mem user ruser euser等等

  euser 表示顯示有效用戶欄位

  ruser 表示顯示真是用戶欄位

  psr 表示顯示CPU與進程的綁定關係

  pcpu CPU的利用率

  ppid 父進程的PID

  pri 系統優先順序值

  ni NICE優先順序

  rtprio 表示顯示實時優先順序

  L 顯示支持的欄位

UNIX風格選項:

  -e 顯示所有進程

  -f 顯示完整格式程式信息

  -F 顯示更完整格式程式信息

  -H 以進程層級格式顯示進程相關信息

  -u userlist 指定有效用戶ID

  -U userliset 指定真正用戶ID

  -g gid 指定有效的gid

  -G gid 指定真的很的gid

  -p PID 顯示指定pid的進程

  -t TTY 顯示指定TTY終端的進程,相當於BSD風格的t選項

GNU風格選項:

  --sort 等同於BSD風格的k選項,對指定屬性進行排序,-表示倒序顯示

  --ppid 等同與UNIX風格的-p選項,指定顯示某PID的進程

 

欄位介紹:

  USER 那個用戶執行的命令

  PID 進程的PID

  %CPU CPU占用的百分比

  %MEM 記憶體占用百分比

  VSZ 是申請的記憶體(占用的虛擬記憶體大小)

  RSS 是實際使用記憶體(指的是常駐記憶體中的大小.不包括交換分區中的)

  TTY 哪個終端啟動的

  STAT 狀態信息

  START 什麼時間啟動的

  TIME 使用時間片的累計值

  COMMAND 命令

    帶中括弧的表示內核的線程

  PPID 父進程的PID

  C CPU的占用百分比

  SIIME 啟動時間

  PSR 運行在哪個CPU核心上

 

 

STAT進程狀態:

  R 運行態

  S (大寫S)可打斷的睡眠態 interruptable sleeping

  D 不可打斷的睡眠態 uninterruptable sleeping

  T 停止態stopped

  Z zombie僵屍態

 

  s (小寫s)會話的發起者,子進程的創建者

  + 前臺進程,運行在終端上的並且占據命令提示符的

  I 空閑內核線程(大寫i)

  l 多線程進程(小寫的L)

  < 高優先順序進程

  N 低優先順序進程

示例:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

EXAMPLES

       To see every process on the system using standard syntax:

          ps -e

          ps -ef

          ps -eF

          ps -ely

 

       To see every process on the system using BSD syntax:

          ps ax

          ps axu

       To print a process tree:

          ps -ejH

          ps axjf

       To get info about threads:

          ps -eLf

          ps axms

       To get security info:

          ps -eo euser,ruser,suser,fuser,f,comm,label

          ps axZ

          ps -eM

       To see every process running as root (real & effective ID) in user format:

          ps -U root -u root u

       To see every process with a user-defined format:

          ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm

          ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

          ps -Ao pid,tt,user,fname,tmout,f,wchan

 

 

三. PRTSTAT命令

prtstat PID 顯示指定PID進程的相信信息

 

示例:

 

 

 

 

四. nice命令

nice命令只能調整非實時優先順序

nice的調整優先順序的範圍是-20~19,對應的系統優先順序就是100~139

 

nice  -n  #  COMMAND 以指定的優先順序來啟動進程

  選項-n 最好不要省略

普通用戶只能往後調整優先順序,root即可以提高優先順序,也可以降低優先順序

 

 

 

 

 

 

 

五. renice命令

renice 同樣也只能調整非實時優先順序,

renice只能調整正在運行的進程的優先順序

renice的調整範圍還是-20~19,即使超出了也不會報錯,但是最大是19

 

renice -n # PID 重新調整指定PID進程的優先順序

  選項-n  可以省略

 

 

 

 

 

 

 

 

六. pgrep命令

 

pgrep [options] pattern

 

選項:

-u uid 根據UID查詢進程,UID是指生效用戶的UID

-U uid 根據UID查詢進程,UID是指真正進程發起者的UID

-t 終端 根據指定終端查找進程

-l 顯示出進程名

-a 顯示完整格式的進程名

-P PID 限制指定PID進程的子進程

 

示例:

 

 

 

 

 

 

七. pidof命令

根據進程名查找進程的PID

 

pidof   [OPTION]   COMMAND

選項:

  -x 根據腳本名稱查找PID

 

示例:

 

 

 

 

八. uptime命令

負載查詢

系統啟動時長

空閑進程的總時長

當前時間

當前上線人數

系統平均負載

CPU的個數*3   這個數字超過5就很忙了

 

 

 

 

 

 

九. mpstat命令

詳細統計了CPU的使用情況,

mpstat # ##   可以每#秒刷新一下,一共統計##

 

 

 

 

 

十. top命令

動態追蹤進程信息

選項:

-d # 指定刷新間隔為#

-n # 指定刷新次數為#

-b 以批次的方式顯示

互動式命令:

M 按照記憶體排序

P 按照CPU排序

T 按照時間片累計進行排序

l 顯示或隱藏top的第一行

t 顯示或隱藏top的第二行第三行

彙總顯示CPU還是分開顯示CPU核心

m 顯示或隱藏TOP的第四行第五行

q 退出

s 調整刷新間隔

k 終止進程

W 另存為文件

 

top - 05:45:41 up 1 day,  8:54,  1 user,  load average: 0.00, 0.00, 0.00

# 當前時間        運行時長  當前登錄用戶數    平均負載  過去1分鐘 5分鐘 15分鐘的平均隊列長度

 

Tasks: 181 total,   1 running, 180 sleeping,   0 stopped,   0 zombie

#    一共的進程數   正在運行數  睡眠進程數    停止進程數    僵死進程數

 

%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

# 用戶空間   系統空間  NICE    空閑     等待IO  硬體中斷  軟體中斷  被虛擬程式偷走的

 

MiB Mem :    957.1 total,    147.3 free,    211.6 used,    598.1 buff/cache

# 總記憶體大小 空閑記憶體大小  已使用記憶體   用於緩衝和緩存的記憶體空間

 

MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.    592.1 avail Mem

#     總交換空間 空閑交換空間    已使用交換空間   可用記憶體空間

 

 

 

 

 

 

十一. HTOP命令

增強版的top命令,需要額外安裝.而且最最重要的,竟然支持滑鼠操作.而且還支持搜索

-d # 指定刷新間隔

-u USERNAME 僅顯示指定用戶的進行

-s COLUME 以指定欄位進行排序

 

-h   人性化顯示

-m M為顯示單位

-g G為顯示單位

 

互動式選項:

H 顯示或隱藏線程

K 顯示或隱藏內核線程,預設是隱藏的

P 以占用CPU百分比排序

M 以占用記憶體百分比排序

T 以使用時間片累計時長排序

l 顯示指定進程打開的文件列表

s 追蹤進程發起的系統調用

t 以樹狀結構顯示進程父子關係或者使用F5

a 將選定的進程綁定指定的CPU核心

 

 

 

 

 

看到有沒有眼前一亮的感覺.真的太好用了.推薦大家使用安裝,資源管理的三板斧不是白叫的.

 

十二. free命令

顯示交換分區和記憶體空間的使用情況

選項:

-h 人性化顯示

-m M為單位顯示

-g G為單位顯示

-b 以位元組為單位顯示

-o 隱藏不顯示cache/buffer,centos6及以前版本有效

-s # 指定刷新間隔

-c  # 指定刷新次數

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

十三.PMAP命令

pmap PID 查看指定進程的物理記憶體映射表

 

 

 

 

 

 

pmap命令實際上就是調用了/proc/PID/maps文件的內容.只不過這個文件不太好理解.使用pmap命令來簡化查看過程

 

 

十四.strace命令

stracem COMMAND 用來追蹤COMMAND命令執行過程中產生的系統調用

 

 

 

 

 

 

十五.ltrace命令

ltrace COMMAND 查看COMMAND命令在執行時調用了那些庫文件

 

 

 

 

 

 

straceltarce建議好好學學,避免成為背鍋俠

 

十六.vmstat命令

查看虛擬記憶體的情況

 

選項:

      vmstat # ##  間隔#秒刷新一次   一共顯示##

      -s 彙總

 

 

 

 

 

欄位介紹:

procs

r 等待運行的進程個數,也就是CPU等待運行的隊列長度

b 處於不可中斷睡眠的進程個數,被阻塞的任務隊列的長度.如果這個數字很大,可能等待IO數很大

 

memory

swpd 交換記憶體使用的總量,如果這個swpd的有使用,或者有增長趨勢就說明記憶體不夠用了.

free 空閑的記憶體總量

buffer 用於緩衝記憶體總量

cache 用於緩存記憶體總量

 

swap

   si: Amount of memory swapped in from disk (/s).從磁碟中交換進記憶體的記憶體量,參照物是記憶體

   so: Amount of memory swapped to disk (/s).從記憶體中交換至磁碟的記憶體量,參照物是記憶體

 

 

io

bi: Blocks received from a block device (blocks/s).以記憶體為參照物,從磁碟寫入到記憶體

bo: Blocks sent to a block device (blocks/s).以記憶體為參照物,從記憶體輸出到磁碟

 

system

in 平均每秒鐘的中斷次數 interrupt

cs 進程切換速率 context switch

 

cpus

us 用戶空間中進程占用CPU的百分比

sy 內核占用CPU的百分比

id 空閑時段消耗的CPU百分比

wa 消耗在等待IO操作完成時消耗CPU的百分比

steal 虛擬程式(偷走的)消耗的cpu百分比

 

 備註:vmstat命令也是通過查看/proc目錄下內核輸出的參數來統計各個進程的相關數據

 

 

十七.IOSTAT命令

iostat #  ## 指定刷新間隔為#,指定刷新次數##

選項:

-c 僅顯示CPU統計信息

-d 僅顯示硬碟統計信息

-x 顯示更加詳細的統計信息,包括CPU和硬碟的

-k K為單位顯示

-m M為單位顯示

欄位介紹:

kB_read/s 讀的速率

kB_wrtn/s 寫的速率

kB_read 讀的總量

kB_wrtn 寫的總量

 

 

 

 

 

 

 

 

 

 

 

 

十八.DSTAT命令

dstata命令預設是每秒刷新一次的.帶顏色顯示.同時強大到沒有朋友的工具

dstat # ## 指定刷新時間為#,指定刷新次數為#

選項:

  -c 僅顯示CPU信息

-C # 顯示在哪個CPU核心上的信息

-d 僅顯示硬碟信息

-n 僅顯示網路流量信息

-g 僅顯示記憶體頁信息

-y 顯示系統有關信息,包括中斷和進程切換速率

-i 顯示軟硬中斷

-m 顯示記憶體相關

-p 顯示進程統計信息

-r 顯示IO請求信息

-s 顯示swap信息

-t 輸出當前時間

-v 等同與vmstat輸出結果

--tcp 顯示tcp相關數據

--udp 顯示Udp相關數據

--raw 顯示raw相關數據

--top-cpu 顯示最占用cpu的進程

--top-io 顯示最占用Io的進程

--top-mem 顯示最占用記憶體的進程

--top-latency 顯示延遲最大的進程

示例:

 

 

 

 

 

 

 

 

 

 

十九.IOTOP命令

前線一些工具都是一些綜合類型的工具,什麼都能監控,單有好像專一了又不太滿足需求,iostat命令,只能查看到磁碟的讀寫很高,但是就是不知道哪個程式帶來的大IO.這個款專一好男人的工具iotop

iotop命令可以不停的刷新顯示當前那些進程頻繁讀寫.放張圖片看看

第一行是磁碟的讀寫的總速率

第二行是實際產生的讀寫速率

第三行參數如下:

TID 線程ID,這裡預設的TID,可是使用交互命令p切換成PID的顯示

PRIO 優先順序,

USER 進程發起者

DISK READ 磁碟讀速率

DISK WRITE 磁碟寫速率

SWAPIN 交換分區寫入速率

IO IO等待的百分比

 

 

 

 

有一個很有意思的設定,第三行上有一個<或者>,這說明正在以這一行進行排序

  大於號表示降序序排序

  小於號表示升序排序

可以使用r鍵進行切換

 

互動式選項:

leftright方向鍵 可以改變排序列

r 方向排序

o 只實際上有IO請求的線程

p PIDTID之間進行切換,預設是TID顯示

i 改變線程或進程的優先順序

q 退出

 

選項:

-o 只顯示正在產生IO請求的進程

-b 以批形式顯示,非互動式模式,主要用作與記錄在文件

-t 加上時間戳,主要用作記錄日誌

-n # 需要結合-b一起使用,顯示幾批次,同樣主要用來記錄日誌,如果不指定# 表示無限次

-d # 指定刷新間隔,預設刷新是1

-p PID 指定監控的進程

-u USER 指定監控哪個用戶的進程

-P 以進程的方式顯示,預設是線程TID

  -q 只在第一次檢測時顯示列名和IO彙總,主要用於記錄日誌

  -qq 永遠不顯示列名,但是還顯示IO彙總,主要用作記錄日誌

  -qqq 列名和IO彙總都不顯示,主要用作記錄日誌

 

示例

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二十.IFTOP命令

監控網路鏈接和流量

選項:

  -n 以數字方式顯示

 

 

 

 

 

二十一.NLOAD命令

監控網路鏈接和流量

選項:

  -t # 指定刷新間隔

  -u {h|b|k|m|g|H|B|K|M|G} 指定顯示單位

    h:auto   b:Bit/s   k:kBit/s   m:mBit/s   g:gBit/s

    H:auto   B:Byte/s   K:kByte/s   M:mByte/s  G:gByte/s

 

 

 

 

 

 

 

 

二十二.LSOF命令

    lsof:list open files    查看當前系統正在使用的文件,在linux中一切皆文件,所以通過lsof命令不僅可以查看正在使用的普通文件,還可以訪問套接字等等,無比強大的工具.
    
    查看當前系統文件的工具,跟蹤某個進程正在使用哪個文件

    可以利用losf恢復已經刪除的文件,前提這個文件正在訪問
    選項:
        -a                列出打開文件的進程
        -c    COMMAND        列出指定進程打開的文件,這裡跟的是進程名
        -g    GID            列出GID用戶的進程詳情
        -d     文件號        列出占用該文件號的進程
        +d    目錄        列出目錄下被打開的文件
        +D    目錄        遞歸列出目錄下被打開的文件
        -n    目錄        列出使用NFS的文件
        -i    條件        列出符合條件的進程
                            4    顯示IPV4的進程
                            6    顯示ipv6的進程
                            :80    顯示占用80埠的進程
                            @IPADDR    顯示和IPADDR鏈接的進程
        -p  PID            列出指定PID進程所打開的文件
        -u    UID            列出UID用戶的進程鎖使用的文件
        -n                不反向解析
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

小技巧:

利用lsof找回誤刪除且正在被打開的文件.

第一步,現在終端持續打開一個文件,模擬這個文件正在被使用

 

第二步,在終端二上刪除正在使用的文件

 

第三步,使用lsof查找剛纔刪除的文件是哪個程式使用的

 

第四步,進入/proc/PID/fd目錄中,其中PID就是剛纔查找到使用誤刪除文件進程的PID

 

第五步,就會發現其中的3號文件描述符就是指向剛纔誤刪除的文件.利用重定向恢復

 

 

文件已經找回來了,只有某個文件正在被使用才能找回來,因為刪除文件後,系統不會立即釋放類刪除的空間.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • public class ActiveDirectoryManager { public static DirectoryEntry GetDirectoryEntry() { DirectoryEntry entry = null; try { if (entry == null) { entry ...
  • private static void GetExpression<T2>(Expression expression) { if (expression.NodeType != ExpressionType.Constant) { var _expression = expression as B ...
  • public static class ExpressionHelp { /// <summary> /// Lambda表達式拼接 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="first"></param ...
  • public partial class ModelStatusDictionary<T> where T : new() { static readonly DynamicMethod<T> _dynamicMethod = new DynamicMethod<T>(); /// <summary ...
  • 我覺得我可以加入歷史博物館了,加入微軟歷史博物館,本文也是和大家吹歷史的博客 ...
  • 全屏應用對應的是視窗模式應用,全屏應用指的是整個屏幕都是被咱一個應用獨占了,屏幕上沒有顯示其他的應用,此時的應用就叫全屏應用。如希沃白板這個程式。本文主要告訴大家從微軟官方的文檔以及考古瞭解到的 Windows 對全屏應用的優化,以及是如何進行的優化,方便小伙伴在撕的時候可以找到根據 ...
  • "TOC" Shell學習 shell概述 shell是一個命令行解釋器,它接收應用程式/用戶命令,然後調用操作系統內核。 shell解釋器 1. Linux提供的解釋器有 2. bash和sh的關係 3. Centos預設的解析器是bash Shell腳本入門 1. 腳本格式 腳本以 !/bin/ ...
  • 進程管理類命令 信號: 在linux當中所有的進行管理都是靠信號來管理的.像我們平時要結束某個進程就是使用的15信號SIGTERM,還有想要強制殺死某個進程,就是使用的9信號SIGKILL等等. 在linux可以查看信號有哪些的指定太多了,kill -l ; trap -l; man 7 signa ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...