Linux進程管理命令

来源:https://www.cnblogs.com/flashfish/archive/2019/04/22/10750917.html
-Advertisement-
Play Games

ps 查看進程,列出執行ps命令的那個時刻的進程快照。如果想要動態顯示,使用top命令 參數格式: UNIX格式:一個"-"開頭 BSD格式:沒有"-"開頭 GNU長格式:兩個"-"開頭 a # 顯示與終端相關的所有進程,包含每個進程的完整路徑 u # 顯示進程的用戶信息 x # 顯示與終端無關的所 ...


ps

  查看進程,列出執行ps命令的那個時刻的進程快照。如果想要動態顯示,使用top命令

  參數格式:

    UNIX格式:一個"-"開頭

    BSD格式:沒有"-"開頭

    GNU長格式:兩個"-"開頭

  a  # 顯示與終端相關的所有進程,包含每個進程的完整路徑

  u  # 顯示進程的用戶信息

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

  -a  # 顯示所有終端下執行的進程

  -u  # 顯示指定用戶相關的進程信息

  -e  # 顯示所有進程

  -f  # 額外顯示UUID PPID C與STIME欄位

  f  # 顯示進程樹

  -H  # 顯示進程樹

  -I  # 以詳細的格式來顯示進程的狀況

  -o  # 自定義輸出指定欄位,以逗號分隔

[root@centos7 ~]# ps
   PID TTY          TIME CMD
  1525 pts/0    00:00:00 bash
  1884 pts/0    00:00:00 ps
[root@centos7 ~]# ps -ef      # 常用組合,UNIX格式組合 -e -f ,額外顯示UID,PPID,C與STIME欄位
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 10:04 ?        00:00:01 /usr/lib/systemd/systemd --switched-rroot          2      0  0 10:04 ?        00:00:00 [kthreadd]
root          3      2  0 10:04 ?        00:00:00 [ksoftirqd/0]
root          5      2  0 10:04 ?        00:00:00 [kworker/0:0H]
root          7      2  0 10:04 ?        00:00:00 [migration/0]

  # UID  # 進程被該UID所擁有
  # PID  # 進程的標識號
  # PPID  # 進程的父進程的標識號
  # C    # CPU使用的資源百分比
  # STIME  # 進程開始的時間
  # tty   # 該進程實在哪個終端機上面運作,若與終端無關,則顯示?,tty1-tty6是本機上面的登入者進程,pts/0表示網路連接進主機的進程
  # TIME  # 進程所使用的總的CPU時間
  # CMD   # 正在執行的命令

[root@centos7 ~]# ps aux      # BSD格式參數,使用a選項和x選項顯示所有進程 u顯示進程的用戶信息
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.2  43680  4052 ?        Ss   10:04   0:01 /usr/lib/systemd/systroot          2  0.0  0.0      0     0 ?        S    10:04   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    10:04   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   10:04   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    10:04   0:00 [migration/0]    

  # USER    該進程所屬用戶
  # PID     該進程的進程號  
  # %CPU    該進程使用掉的CPU資源百分比 
  # %MEM    該進程所占用的記憶體百分比
  # VSZ     該進程使用掉的虛擬記憶體量
  # RSS     該進程占用的固定的記憶體量
  # TTY     該進程在那個終端機上面運行的
  # STAT
     R 正在運行  S 正在中斷睡眠中  D 不可中斷睡眠  T  正在偵測或者是停止了  Z  已經終止,或者zombie僵死進程,
     + 前臺進程  l 多線程進程  N 低優先順序進程  < 高優先順序進程  s 進程領導者  L 已將頁面鎖定到記憶體中  
  # START 該進程被觸發啟動的時間  
  # TIME   該進程實際使用CPU運作的時間
  # COMMAND  該進程的實際命令


[root@centos7 ~]# ps -l  # UNIX格式參數,使用參數-l以詳細的格式顯示進程的狀況
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1525 1419 0 80 0 - 29122 do_wai pts/0 00:00:00 bash
0 R 0 1898 1525 0 80 0 - 38300 - pts/0 00:00:00 ps

    # F 代表這個進程的flag,4代表超級用戶

    # S 代表這個進程的狀態(STAT),

    # PRI  優先順序Priorty的縮寫,執行順訊

    # NI  NICE值

    # ADDR  指出該進程在記憶體那個部分,如果是個running進程,一般是“-”

    # SZ    使用掉的記憶體大小

    # WCHAN  進程是否在運行當中,-表示正在運行 

pgrep

  顯示指定進程的pid命令,ps和grep命令的結合

  -u  顯示指定用戶的所有進程號

  

[root@centos7 ~]# pgrep sshd 
1251
1419
[root@centos7 ~]# pgrep -u root
1
2
3

kill

  終止進程

   kill [-s signal|-p] [-q sigval] [-a] [--] pid...

  -l  列出全部的信號名稱

  -p  指定kill命令只列印相關進程的進程號

  -s  指定要發送的信號

[root@centos7 ~]# kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP

[root@centos7 ~]# kill -l 9
KILL

    # HUP(1)    掛起,通常因終端掉線,或用戶退出而引發
    # INT2(2)    中斷,
    # QUIT(3)        退出
    # KILL(9)        立即結束進程的運行
    # TERM(15)    終止,系統關機時發送
    # TSTP            暫停進程的運行,

[root@centos7 ~]# kill -9 進程號碼

# mysql進程嚴禁使用kill -9 強制殺死

  特殊信號“0”

# kill有個特殊信號0,使用格式,kill -0 $pid 其中的-0表示不發送任何信號給$pid對應的進程,
但是仍然會對$pid是否存在對應的進程進行檢查,若進程存在,返回0.反之,返回1 一般腳本中會用到,來寫一個管理系統服務的腳本

 

killall

  通過進程名終止進程,需要連續執行幾次

  -u  終止指定用戶的進程

  -w  等待所有被終止的進程死去,如果進程停留在僵死狀態,那麼killall可能會永久等待

  

pkill

  通過進程名終止指定的進程,可殺死指定進程及子進程

  -t  # 殺死指定終端的進程

  -u  # 殺死指定用戶的進程

  

[root@centos7 ~]# w
 13:59:12 up  3:54,  1 user,  load average: 0.08, 0.03, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1         10:04    8.00s  0.21s  0.05s w


[root@centos7 ~]# pkill crond          #  通過進程名
[root@centos7 ~]# systemctl status crond.service   
  
[root@centos7 ~]# pkill -t tty1          # 通過終端名
[root@centos7 ~]# pkill -u root          # 通過用戶名

top

  實時地對系統處理器狀態進行監控,能夠實時地顯示系統中各個進程占用的狀況

  -a  # 將進程按照使用記憶體排序

  -b  # 批處理的模式顯示進程信息,輸出結果可以傳遞給其他程式或寫入到文件中,配合-n使用,一直打到-n設置的閾值

  -c  # 顯示進程的整個命令路徑,而不是只顯示命令名稱

  -d  # 指定每兩次屏幕信息刷新之間的時間間隔

  -H  # 指定這個可以顯示每個線程的情況,否則就是進程的總的狀態

  -i  # 不顯示閑置或者僵死的進程狀態  

  -n  # top輸出信息更新的次數,完成後將推出top命令

  -p  # 顯示指定的進程信息

  

  互動式命令及說明

    h  幫助    Z  全局顏色配置  B  全局字體加粗設置

    l  顯示平均負載和啟動時間信息    t  顯示進程和CPU狀態信息

    m  顯示記憶體信息          1  數字1,用於多核CPU監控,可監控每個邏輯CPU的狀況

    。。。。。。。

    可以自查瞭解

top - 14:27:26 up 4:22, 1 user, load average: 0.08, 0.03, 0.05
Tasks:
96 total, 2 running, 94 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1865284 total, 1460360 free, 96264 used, 308660 buff/cache KiB Swap: 1048572 total, 1048572 free, 0 used. 1595216 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2029 root 20 0 0 0 0 R 0.3 0.0 0:00.14 kworker/0:1

第一行:任務隊列信息,同uptime命令的執行結果
   

  14:27:26    # 當前系統時間
  up  4:26    # 系統已經運行了4個半小時
  
1 user     # 當前有1個用戶登錄系統
  load average: 0.08, 0.03, 0.05    # 1分鐘,5分鐘,15分鐘的平均負載情況

第二行:Tasks為任務(進程)。上面的信息顯示為
  共有96個進程,處於運行狀態的有2個,94個在休眠,stoped狀態0個,zombie狀態有0個

第三行:CPU狀態信息
  us  # 用戶空間占用CPU的百分比
  sy  # 內核空間占用cpu的百分比
  ni  # 改變優先順序的進程占用CPU的百分比
  id  # 空閑CPU百分比
  wa  # I/O等待只用CPU的百分比
  hi  # 硬中斷占用CPU的百分比
  si  # 軟中斷
  st  # 虛擬機占用CPU的百分比

第四行:記憶體狀態

  total  # 物理記憶體總量
  used   # 使用中的記憶體總量
  free   # 空閑記憶體總量
  buffers  # 緩衝的記憶體量

第五行:swap交換分區信息
  total  # 交換分區總量
  used   # 使用的交換區總量
  free    # 空閑交換區總量
  cached  # 緩存的記憶體量

第六行:給出的各進程(任務)的狀態監控
  PID  # 進程iD
  USER  # 進程所有者
  PR    # 進程優先順序
  NI    # nice值,負值表示高優先順序,正值表示低優先順序
  VIRT    # 進程使用的虛擬記憶體總量,單位為KB
  RES    # 進程使用的,未被換出的物理記憶體大小,單位KB
  SHR    # 共用記憶體大小,單位為kb
  S      # 進程狀態,D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵屍進程
  %CPU    # 上次更新到現在的CPU時間占用百分比
  %MEM    # 進程使用的物理記憶體百分比
  TIME+    # 進程使用的物理記憶體百分比
  COMMAND  # 進程名稱

nohup

  用戶退出系統進程繼續工作。可以將程式以忽略掛起信號的方式運行起來,被運行程式的輸出信息將不會顯示到終端

  輸出信息寫入到當前目錄的nohup.out文件中,如果當前目錄的nohup.out文件不可寫,則輸出重定向到$HOME/nohup.out

strace

  跟蹤進程的系統調用,是一款程式調試工具,主要檢車一個應用程式所使用的系統調用以及他所接收的系統信息

  -c  統計每一個系統調用所執行的時間,次數,和出錯的次數

  -d  輸出關於標準錯誤的調試信息

  -f  跟蹤目標進程,以及目標進程創建的所有子進程

  -i  輸出系統調用的入口指針

  -q  進位輸出關於脫離的消息

  -r  輸出每一個系統調用的相對時間

  -t  在輸出的每一行前調用的相對時間

  -T  顯示每次系統調用所花費的時間

  -v  對於某些相關調用,把完整的環境變數,文件stat結構等列印出來

  -x  以16進位形式輸出非標準字元串

  -e  輸出過濾器,通過表達式,可以過濾掉你不想要的輸出

  -o  將strace的輸出寫入文件filename

  -p pid  指定要跟蹤的進程pid,要同時跟蹤多個pid,重覆多次-p選項即可

[root@centos7 ~]# strace -tt -f /etc/init.d/network 
[root@centos7 ~]# strace -c /etc/init.d/network 
Usage: /etc/init.d/network {start|stop|status|restart|reload|force-reload}
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 44.53    0.000839         168         5           clone
 27.44    0.000517           1       382           rt_sigprocmask
  6.53    0.000123           5        26           read

# 上面的結果告訴我們調用了哪些系統函數,調用的次數是多少,消耗了多少時間等信息,這對我們分析程式來說是非常有用的

ltrace

  ltrace能夠跟蹤進程的庫函數調用,它會顯現出調用了那個庫函數,而strace則是跟蹤進程的每個系統調用

  和strace參數公用

runlevel

  輸出當前Linux系統的運行級別

  0    停機

  1    單用戶模式

  2    無網路的多用戶模式

  3    多用戶模式

  5    圖形界面多用戶模式

  6    重啟

 

init

  初始化Linux進程,是所有Linux進程的父進程,進程號為1,主要任務一句/etc/inittab創建linux進程

  

service

[root@centos7 ~]# service --status-all    # 顯示所有服務狀態

 

  管理系統服務,比如start|stop|status|reload等等

 


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

-Advertisement-
Play Games
更多相關文章
  • OsharpNS框架入門教程 1. OsharpNS所需的基礎環境 ok 2. 使用OsharpNS項目模板創建項目 ok 3. 配置資料庫連接串並啟動項目 ok 4. OsharpNS.Swagger使用實例(登錄和授權) ok 5. Angular6的前端項目啟動 ok 6. 使用MySql作為 ...
  • rpm -ivh software_name安裝軟體 列印詳情rpm -q software_name查詢軟體是否安裝rpm -ql software_name查詢安裝目錄rpm -e software_name卸載軟體rpm -Uvh software_name升級軟體包rpm -ivh http ...
  • ls 作用:顯示目標列表,在Linux中是使用率較高的命令。ls命令的輸出信息可以進行彩色加亮顯示,以分區不同類型的文件。 參數: 實例: 顯示當前目錄下非隱藏文件的文件 顯示當前目錄下包括影藏文件在內的所有文件列表 輸出長格式 [root@iZuf61bne18a1bikx6z7bvZ /]# l ...
  • 需求: 自己有個功能變數名稱,原來直接扔在了伺服器的文件夾里(根據客服人員指導),自己玩了一遍nginx的安裝部署等操作之後,功能變數名稱的指向發生了改變,到了nginx成功的界面。 自己抱著極大的好奇心來配置nginx,已達到我能訪問到我的主頁的樣子,當然啦。做個功能變數名稱主頁對我來說最主要的作用就是學(裝)習(逼)。 ...
  • man 查看英文命令幫助 可以看作--help 拷貝目錄的命令cp -a 包含所有 ls -a 顯示所有文件包括隱藏文件 -ld ls -F 過濾目錄文件(給不同類型文件結尾加上不同的符號) -h顯示文件的k,M,G -i顯示文件的索引inode ls -l --time-style=long-is ...
  • 遇到了好幾個centos6.5,一直嘗試想提權。暫未成功,靶機內核:2.6.32-696.18.7.el6.x86_64。glibc版本:ldd (GNU libc) 2.12目前編譯過程中都發現很多坑。最開始編譯報錯,指定gcc路徑/usr/bin/gcc,指定std為c99,使用-std=c99... ...
  • 最近在學習Liunx,從裝虛擬機到敲命令出了一些問題,95%的問題從搜索引擎都可以找到。本來想寫個虛擬機安裝步驟結果忘記截圖了,不過沒事,網上一大把。寫寫博文勒就是記錄下自己的成長,雖然現在還是個小白。同時也讓一起在學習的小伙伴們一起交流學習。 1.開啟虛擬機出現了“內部錯誤”,截圖如下 解決方法: ...
  • 1、begin #! 是一個約定的標記,它告訴系統這個腳本需要什麼解釋器來執行,即使用哪一種 Shell。 echo 命令用於向視窗輸出文本。 2、運行shell的2種方式 2.1、作為可執行程式 將上面的代碼保存為 test.sh,並 cd 到相應目錄: 2.2、作為解釋器參數 這種運行方式是,直 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...