Linux怎麼檢視程序資源使用情況

本頭條號每天堅持更新原創乾貨技術文章,歡迎關注本頭條號。

如需學習視訊,請在微信搜尋公眾號“智傳網優”直接開始自助視訊學習


1. 前言

本文主要講解在Linux系統如何檢視程序資源使用的情況。本文將會介紹多個命令列工具。

在本教程中,您將學習到以下知識:

  • 如何使用ps命令檢視程序的基本資訊
  • 如何使用top命令檢視程序佔用的CPU和記憶體的情況。
  • 如何使用nethogs命令檢視程序實時的網路連線速度
  • 如何使用ss命令檢視程序佔用的埠號
  • 如何使用lsof命令檢視程序佔用的檔案。
   

Linux怎麼檢視程序資源使用情況

實施準備工作:

  • 1. 主流Linux系統
  • 2. 具有root許可權
  • 3. 具有域名控制權,可做DNS對映,比如域網與IP的對映
  • 4. 熟悉Linux基本命令列操作,比如vi命令

軟體工具清單:

  • 1. ps:用於檢視程序基本資訊。
  • 2. top:檢視程序佔用的資源情況。
  • 3. nethogs:檢視程序實時的網路連線速度
  • 4. ss:檢視程序佔用的埠號
  • 5. lsof:檢視程序佔用的檔案

2. 使用`ps`命令檢視程序的基本資訊

比如,我想檢視nginx程序的基本資訊:

切換到root使用者

su -

執行以下命令,檢視nginx程序的基本資訊

ps -ef |head -n1;ps -ef |grep nginx

輸入出結果:

UID        PID  PPID  C STIME TTY          TIME CMD root      5950     1  0 2月06 ?       00:00:00 nginx: master process /usr/sbin/nginx  -c /etc/nginx/nginx.conf

   

使用ps命令檢視程序的基本資訊

上面的輸出結果列分別表示

  • UID:使用者ID、
  • PID:程序ID
  • PPID:父程序
  • C:CPU佔用率
  • STIME:開始時間
  • TTY:開始此程序的TTY----終端裝置
  • TIME:此程序執行的總時間
  • CMD:執行的命令

可以看出,我伺服器上的nginx執行的命令是/usr/sbin/nginx -c /etc/nginx/nginx.conf。

實際上,這是一臺測試用的Linux虛擬機器。

更詳細的用法請參考以下教程:
   Linux 怎麼樣檢視程序狀態(包括佔用記憶體和CPU)

3. 使用`top`命令檢視程序佔用的CPU資源和記憶體資源的情況

我想檢視nginx佔用的CPU和記憶體的情況
   前面我們得知:nginx的程序號是5950
   檢視程序號為5950的程式佔用的資源情況:

top -p 5950

輸出結果:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME  COMMAND                                   5950 root      20   0  115548   4124   2032 S   0.0  0.1   0:00.02 nginx

   

使用top命令檢視程序佔用的CPU資源和記憶體資源的情況

輸出結果每列的含義:

  • PID:程序ID
  • USER:使用者
  • PR:程序優先順序
  • NI: nice值。負值表示高優先順序,正值表示低優先順序
  • VIRT:虛擬記憶體大小。程序使用的虛擬記憶體總量,單位kb。VIRT=SWAP RES
  • RES:程序使用的、未被換出的實體記憶體大小,單位kb。RES=CODE DATA
  • SHR:共享記憶體大小,單位kb
  • S:程序狀態。D=不可中斷的睡眠狀態,R=執行,S=睡眠,T=跟蹤/停止,Z=殭屍程序
  • %CPU:上次更新到目前的CPU時間佔用百分比
  • %MEM:程序使用的實體記憶體百分比
  • TIME :程序使用的CPU時間總計,單位秒
  • COMMAND:程序正在使用的命令,執行引數等等。

top命令更多的用法請參考以下教程:

Linux工作管理員之top命令詳解

4. 使用`nethogs`命令檢視程序實時的網路資源佔用情況

注意的是,Linux發行版預設情況下,一般都沒有安裝nethogs命令

我們接下來需要手動安裝它:

CentOS系統安裝nethogs:

yum install nethogs -y

Ubuntu系統安裝nethogs:

sudo apt install nethogs -y

接下來使用nethogs檢視程序實時的網路連線速度,包括上傳和下載的速度:

切換到root使用者執行以下命令

nethogs

   

使用nethogs命令檢視程序實時的網路連線速度

從上圖我們可以看到,wget程式正在下載檔案,它的速度為400KB/S

想更詳細瞭解nethogs的使用方法和功能?請參考以下教程
   Linux怎麼檢視和監控每個程序的實時流量

5. 使用`ss`命令檢視程序佔用的埠號

切換到root使用者後,執行以下命令檢視nginx程序佔用的埠號

ss -lntp |grep nginx

   

使用ss命令檢視程序佔用的埠號

從上圖可以看到,我的nginx程式開了2個程序,分別佔用了80和888埠。

想更詳細瞭解ss的使用方法和功能?請參考以下教程
   linux怎麼檢視程序佔用埠

6. 使用`lsof`命令檢視程序佔用的檔案資源

檢視nginx程序開啟的檔案:

lsof -c nginx

   

使用lsof命令命令檢視程序佔用的檔案

想更詳細瞭解ss的使用方法和功能?請參考以下教程
   Linux lsof命令詳解

7. 結論

通過本文,您應該可以學習到如何在Linux系統如何檢視程序資源使用的情況了吧?其實也是需要對Linux有較多的瞭解才能獲取到比較全面的資料。如果您有更好方法,請留言。


如果喜歡本文,歡迎轉發。本文已同步至部落格站,尊重原創,轉載時請在正文中附帶以下連結:
   
   https://www.linuxrumen.com/rmxx/1915.html

點選瞭解更多,快速檢視更多的技術文章列表。