Linux 進程管理

来源:https://www.cnblogs.com/llife/archive/2019/08/27/11421527.html
-Advertisement-
Play Games

Windows 有任務管理器來管理進程,Linux 也有相應的命令來管理進程。 ...


CentOS-Logo

Windows有任務管理器來管理進程,Linux也有相應的命令來管理進程。


查看進程

ps

  • 查看靜態的進程統計信息

a:顯示當前終端下的所有進程信息,包括其他用戶的進程。與x選項結合時將顯示系統中所有的進程信息。
u:使用以用戶為主的格式輸出進程信息。
x:顯示當前用戶在所有終端下的進程信息。
-e:顯示系統內的所有進程信息。
-l:使用長(Long)格式顯示進程信息。
-f:使用完整的(Full)格式顯示進程信息。

[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 128164  6832 ?        Ss   15:50   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root          2  0.0  0.0      0     0 ?        S    15:50   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    15:50   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   15:50   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    15:50   0:00 [kworker/u256:0]
root          7  0.0  0.0      0     0 ?        S    15:50   0:00 [migration/0]
//有很多,不寫。

USER:啟動該進程的用戶賬號的名稱。
PID:該進程在系統中的數字ID號,在當前系統中是唯一的。
%CPUCPU占用的百分比。
%MEM:記憶體占用的百分比。
VSZ:占用虛擬記憶體(swap空間)的大小。
RSS:占用常駐記憶體(物理記憶體)的大小。
TTY:表明該進程在哪個終端上運行。?表示未知或不需要終端。
STAT:顯示進程當前的狀態,如S可中斷休眠進程D不可中斷休眠進程R運行Z僵死<高優先順序N低優先順序s父進程l多線性進程+前臺進程。對處於僵死狀態的進程應該予以手動終止。
START:啟動該進程的時間。
TIME:該進程占用的CPU時間。
COMMAND:啟動該進程的命令的名稱。

[root@localhost ~]# ps -elf
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 - 32041 ep_pol 15:50 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
1 S root          2      0  0  80   0 -     0 kthrea 15:50 ?        00:00:00 [kthreadd]
1 S root          3      2  0  80   0 -     0 smpboo 15:50 ?        00:00:00 [ksoftirqd/0]
1 S root          5      2  0  60 -20 -     0 worker 15:50 ?        00:00:00 [kworker/0:0H]
1 S root          6      2  0  80   0 -     0 worker 15:50 ?        00:00:00 [kworker/u256:0]
1 S root          7      2  0 -40   - -     0 smpboo 15:50 ?        00:00:00 [migration/0]
//有很多,不寫。

PPID:當前進程的父進程
CCPU占用
PRI:用戶態的進程優先順序
NI:內核態的進程優先順序,取值範圍-20~19,數值越低,優先順序越高。
ADDR-表示正在運行
SZ:虛擬記憶體swap占用
WCHAN:當前進程在內核中的名稱

top

  • 查看進程動態信息,每3s刷新一次
[root@localhost ~]# top
top - 19:27:16 up  3:36,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  98 total,   1 running,  97 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  6.2 sy,  0.0 ni, 93.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1867024 total,  1348360 free,   148256 used,   370408 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1525688 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
     1 root      20   0  128164   6832   4064 S  0.0  0.4   0:02.43 systemd
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
     3 root      20   0       0      0      0 S  0.0  0.0   0:00.25 ksoftirqd/0
     5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
     6 root      20   0       0      0      0 S  0.0  0.0   0:00.59 kworker/u256:0
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
//有很多,不寫。

Tasks系統任務信息:total總進程數,running正在運行的進程數,sleeping休眠的進程數,stopped中止的進程數,zombie僵死無響應的進程數。

CPU占用信息:us用戶占用,sy內核占用,ni優先順序調度占用,id空閑CPU,waI/O等待占用,hi硬體中斷占用,si軟體中斷占用,st虛擬化占用。

Mem記憶體占用信息:total總記憶體空間,free空閑記憶體,used已用記憶體,buff/cache,物理記憶體和交換記憶體的緩衝區總和。

Swap交換空間占用:total總交換空間,free空閑交換空間,used已用交換空間,avail Mem可用物理空間。

pgrep

  • 過濾查詢進程信息

-l:同時輸出對應的進程名,否則只輸出PID,不便於查看。
-U:查詢特定用戶的進程
-t:查詢特定終端運行的進程

[root@localhost ~]# pgrep -l "login"
39654 systemd-logind
[root@localhost ~]# pgrep -l -U root -t tty1
40422 X

pstree

  • 查看進程樹

-a:列出完整的命令信息
-u:列出對應的用戶名
-p:列出對應的PID

[root@localhost ~]# pstree -aup
systemd,1 --switched-root --system --deserialize 21
  ├─ModemManager,39616
  │   ├─{ModemManager},39631
  │   └─{ModemManager},39649
  ├─NetworkManager,39701 --no-daemon
  │   ├─dhclient,39841 -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens33.pid -lf...
  │   ├─{NetworkManager},39704
  │   └─{NetworkManager},39709
//有很多,不寫。
  • 不加u,以指定用戶作為參數,可查看屬於指定用戶的進程數結構。
[root@localhost ~]# pstree -ap ll
未發現進程。

控制進程

&

  • 運行較長時間的操作時,命令後面加&符號,放到後臺運行
[root@localhost ~]# dd if=/dev/zero of=~/test.tmp bs=1M count=2048 &
[1] 8773

Ctrl + C

  • 終止正在執行的進程
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (183.232.231.174) 56(84) bytes of data.
64 bytes from 183.232.231.174 (183.232.231.174): icmp_seq=1 ttl=128 time=34.6 ms
64 bytes from 183.232.231.174 (183.232.231.174): icmp_seq=2 ttl=128 time=34.9 ms
^C
--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 34.660/34.823/34.987/0.248 ms

Ctrl + Z

  • 將前臺正在執行的進程調入後臺並暫停執行
[root@localhost ~]# dd if=/dev/zero of=~/data.tmp bs=1M count=2048
^Z
[1]+  Stopped                 dd if=/dev/zero of=~/data.tmp bs=1M count=2048

jobs

  • 查看當前終端在後臺運行的進程任務

-l:顯示進程對應的PID

[root@localhost ~]# jobs -l
[1]+  8778 Stopped                 dd if=/dev/zero of=~/data.tmp bs=1M count=2048

bg

  • 將後臺中暫停執行的任務恢復運行,並繼續在後臺運行,需指定任務編號作為參數
[root@localhost ~]# bg 1

fg

  • 將後臺中的任務恢復到前臺運行,需指定任務編號作為參數
[root@localhost ~]# fg 1

kill

  • 通過PID終止進程運行,無特定選項時,給程式發送終止信號並正常退出運行

-9:強制終止

[root@localhost ~]# vi testfile

[1]+  Stopped                 vi testfile
[root@localhost ~]# jobs -l
[1]+  8935 Stopped                 vi testfile
[root@localhost ~]# kill 8935
[root@localhost ~]# jobs -l
[1]+  8935 Stopped                 vi testfile
[root@localhost ~]# kill -9 8935
[root@localhost ~]# jobs -l
[1]+  8935 Killed                  vi testfile

killall

  • 通過進程名終止運行,需要結束多個相同名稱的進程時,killall更方便。
[root@localhost ~]# vi testfile1

[1]+  已停止               vi testfile1
[root@localhost ~]# vi testfile2

[2]+  已停止               vi testfile2
[root@localhost ~]# jobs -l
[1]-  1803 停止                  vi testfile1
[2]+  1804 停止                  vi testfile2
[root@localhost ~]# killall -9 vi
[1]-  已殺死               vi testfile1
[2]+  已殺死               vi testfile2
[root@localhost ~]# jobs -l

pkill

  • 特定條件終止,與pgrep類似

-U:指定用戶
-t:指定終端

[root@localhost ~]# pgrep -l -U "ll"
1875 gnome-keyring-d
1893 gnome-session-b
//有很多,不寫
[root@localhost ~]# pkill -9 -U "ll"
[root@localhost ~]# pgrep -l -U "ll"

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

-Advertisement-
Play Games
更多相關文章
  • python_控制台輸出帶顏色的文字方法 在python開發的過程中,經常會遇到需要列印各種信息。海量的信息堆砌在控制臺中,就會導致信息都混在一起,降低了重要信息的可讀性。這時候,如果能給重要的信息加上字體顏色,那麼就會更加方便用戶閱讀了。 當然了,控制台的展示效果有限,並不能像前段一樣炫酷,只能做 ...
  • 什麼是Java中的引用? 引用的概念,如果一個變數的類型是 類類型,而非基本類型,那麼該變數又叫做引用。 步驟 1 : 引用和指向 new Hero(); 代表 創建 了一個Hero對象 但是也僅僅是創建了一個對象,沒有辦法訪問它 為了訪問這個對象,會使用 引用 來 代表 這個對象 Hero h = ...
  • 閱讀目錄 [TOC] 概覽 為了防止不符合規範的數據進入資料庫,在用戶對數據進行插入、修改、刪除等操作時,DBMS自動按照一定的約束條件對數據進行監測,使不符合規範的數據不能進入資料庫,以確保資料庫中存儲的數據正確、有效、相容。 約束條件與數據類型的寬度一樣,都是可選參數,主要分為以下幾種: "返回 ...
  • 閱讀目錄 數值類型 日期時間類型 字元串類型 ENUM和SET類型 "返回頂部" 數值類型 MySQL支持所有標準SQL數值數據類型。 這些類型包括嚴格數值數據類型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似數值數據類型(FLOAT、REAL和DOUBLE PREC ...
  • 主鍵就是一個表中每個數據行的唯一標識。不會有重覆值的列才能當主鍵。一個表可以沒有主鍵,但是會非常難以處理,因此沒有特殊理由表都要設定主鍵 主鍵有兩種選用策略:業務主鍵和邏輯主鍵。業務主鍵是使用有業務意義的欄位做主鍵,比如身份證號、銀行賬號等;邏輯主鍵是使用沒有任何業務意義的欄位做主鍵,完全給程式看的 ...
  • 目 錄 1. 概述... 2 2. 使命及目標... 3 3. 系統框架... 4 4. 設備容器(iNeuKernel)... 4 5. 第三方數據導入介面... 9 6. 視圖建模(iNeuView)... 10 7. 機器學習(iNeuAI)... 11 8. 徵集需求... 13 1. 概述 ...
  • 本文將通過實際的例子來演示如何在ASP.NET Core中應用JWT進行用戶認證以及Token的刷新方案(ASP.NET Core 系列目錄) 一、什麼是JWT? JWT(json web token)基於開放標準(RFC 7519),是一種無狀態的分散式的身份驗證方式,主要用於在網路應用環境間安全 ...
  • 實際的生產環境中,總會做一些定期的任務,比如數據備份,我們不可能總等到那個時間去手動執行,這時計劃任務就派上用場了。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...