網店代運營公司方案seo查詢愛站
Shell命令管理進程
- 列出進程
- ps命令
- top命令
- 管理后臺進程
- 啟動后臺進程
- 查看后臺進程
- jobs和ps的區(qū)別
- 停止進程
??Linux除了是一種多用戶操作系統(tǒng)之外,還是一種多任務系統(tǒng)。多任務意味著可以同時運行多個程序。Linux 提供了相關的工具來列出運行中的進程,監(jiān)視系統(tǒng)的使用情況以及在必要時停止(或殺死)進程。
??可以通過一個 Shell啟動、暫停、停止或者殺死進程。此外,還可以將進程放置到后臺以及帶到前臺。本篇詳細介紹ps、top、kill、jobs 以及其他用來列出和管理進程的命令。
列出進程
ps命令
??ps
(Process Status)是一個常用的Linux/Unix命令,用于查看當前系統(tǒng)中運行的進程信息。它可以顯示進程的狀態(tài)、資源使用情況以及其他相關信息。ps
命令的基本用法如下:
ps [選項]
??以下是一些常用的ps
命令選項和示例:
??1. 顯示當前用戶的所有進程:
ps
??ps
命令的輸出中的 PID
、TTY
、TIME
和 CMD
是關于進程的信息的字段,它們分別代表以下內容:
??· PID
(Process ID):進程的唯一標識符,用于識別和管理進程。每個進程都有一個唯一的PID,通過PID可以進行進程的操作和跟蹤。
??· TTY
(Terminal Type):與進程關聯的終端設備(如果有的話)。這個字段顯示了進程是否與終端關聯,以及關聯的終端類型。通常,如果進程是在終端上運行的,TTY字段將顯示終端設備名稱,否則顯示?
或pts/0
等。
??· TIME
:進程已經占用CPU的累計時間。它通常以小時、分鐘和秒的形式顯示,用于表示進程在CPU上的運行時間。
??· CMD
(Command):啟動進程的命令行。這個字段顯示了進程的完整命令,包括命令名稱和可能的參數。
??2. 顯示所有進程的詳細信息,包括進程的PID(進程ID)、PPID(父進程ID)、CPU使用情況、內存使用情況等:
ps aux
??ps aux
命令的輸出中的字段分別代表以下內容:
??· USER
:啟動進程的用戶名。這是進程的所有者。
??· %CPU
:進程占用的CPU利用率,以百分比表示。
??· %MEM
:進程占用的物理內存利用率,以百分比表示。
??· VSZ
(Virtual Memory Size):進程的虛擬內存大小,以千字節(jié)(KB)為單位。它表示進程當前使用的虛擬內存的總大小。
??· RSS
(Resident Set Size):進程的常駐內存大小,以千字節(jié)(KB)為單位。它表示進程當前占用的物理內存的大小。
??· STAT
:進程的狀態(tài)。通常以單個字符表示,例如,R
表示運行中,S
表示休眠,Z
表示僵尸進程等。
??· START
:進程啟動的時間和日期。
??· COMMAND
:啟動進程的完整命令行。
??3. 顯示指定用戶的所有進程,例如,顯示用戶名為user
的所有進程:
ps -u user
??4. 顯示指定進程的信息,例如,顯示PID為1234
的進程:
ps -p 1234
??5. 以樹狀結構顯示進程,包括父子關系:
ps -ejH
??· UID
(User ID):啟動進程的用戶ID。這是進程的所有者的數字標識符。
??· PID
(Process ID):進程的唯一標識符,用于識別和管理進程。
??· PPID
(Parent Process ID):父進程的PID,即啟動當前進程的進程的PID。
??· PGID
(Process Group ID):進程組的ID,多個進程可以被組織成一個進程組。
??· SID
(Session ID):會話的ID,一個會話可以包含多個進程組。
??· C
:進程占用CPU的時間片百分比。
??· STIME
:進程的啟動時間。
top命令
??top
命令是一個用于實時監(jiān)視系統(tǒng)性能的強大工具,它會以交互式方式顯示系統(tǒng)中運行的進程的信息,包括 CPU 使用率、內存使用、進程列表等。要正確分析 top
命令的輸出,可以按照以下步驟進行:
??理解頂部概要信息: top
命令的頂部顯示包含系統(tǒng)的概要信息。上圖第一行,分別是系統(tǒng)運行時間、用戶數量、平均系統(tǒng)負載。
??平均系統(tǒng)負載是一個用于衡量系統(tǒng)負載的指標,它表示在一段時間內系統(tǒng)中正在運行或等待執(zhí)行的進程數量。通常,平均系統(tǒng)負載以三個值的形式顯示,分別對應于不同的時間段:1分鐘、5分鐘和15分鐘。
要理解這些值的含義,可以將其解釋如下:
??第一個值(1分鐘負載平均):它表示在過去1分鐘內平均有多少個進程處于運行狀態(tài)或等待運行狀態(tài)。這個值通常對應于系統(tǒng)的瞬時負載情況,如果這個值大于系統(tǒng)的CPU核心數量,表示系統(tǒng)可能正處于過載狀態(tài)。
??第二個值(5分鐘負載平均):它表示在過去5分鐘內平均有多少個進程處于運行狀態(tài)或等待運行狀態(tài)。這個值通常對應于較長時間內的負載情況,可以用來觀察系統(tǒng)的負載趨勢。
??第三個值(15分鐘負載平均):它表示在過去15分鐘內平均有多少個進程處于運行狀態(tài)或等待運行狀態(tài)。這個值通常對應于相對較長的時間段內的負載情況,也可以用來觀察系統(tǒng)的負載趨勢。
??通常情況下,平均系統(tǒng)負載值應該保持在系統(tǒng)的CPU核心數量范圍內(例如,如果系統(tǒng)有4個CPU核心,那么負載應該在1到4之間較為正常)。如果平均系統(tǒng)負載持續(xù)高于系統(tǒng)的CPU核心數量,可能表示系統(tǒng)正處于過載狀態(tài),需要進一步分析和處理,例如優(yōu)化性能或增加硬件資源。
??第二行是任務運行統(tǒng)計。第三行是CPU使用情況。
??
us
:用戶空間(User Space)CPU 使用率。它表示在用戶程序中消耗的CPU時間,例如運行應用程序。
??sy
:系統(tǒng)空間(System Space)CPU 使用率。它表示在內核中執(zhí)行系統(tǒng)調用或內核任務時消耗的CPU時間,例如處理硬件中斷或文件系統(tǒng)操作。
??ni
:Nice值(Nice)。Nice值是進程的調度優(yōu)先級,如果有運行在較低優(yōu)先級的進程,它們消耗的CPU時間會顯示在這里。
??id
:空閑(Idle)CPU 時間的百分比。這表示 CPU 空閑的時間百分比,沒有任何任務在運行。
??wa
:等待(Wait)CPU 時間的百分比。它表示 CPU 等待I/O操作完成的時間百分比,通常用于檢測磁盤或其他I/O瓶頸。
??hi
:硬中斷(Hardware Interrupts)CPU 時間的百分比。它表示處理硬件中斷的時間百分比,通常由硬件設備觸發(fā)。
??si
:軟中斷(Software Interrupts)CPU 時間的百分比。它表示處理軟中斷的時間百分比,通常由操作系統(tǒng)內核觸發(fā)。
??st
:虛擬化(Steal Time)CPU 時間的百分比。這個值通常在虛擬化環(huán)境中出現,表示虛擬機被宿主機奪走的CPU時間。
??第四行是系統(tǒng)內存和交換空間的統(tǒng)計信息。
??查看進程列表: top
的主要部分是進程列表,它會列出當前運行的所有進程。默認情況下,進程按照CPU使用率排序,最高的進程位于列表的頂部。你可以按下不同的鍵來改變排序方式,例如按下M
鍵按內存使用率排序。
??理解各列的含義: 見本篇博客的ps命令介紹。
??交互式操作: top
命令允許在運行時進行交互式操作。你可以使用鍵盤上的不同鍵來改變排序、過濾進程、查看不同的系統(tǒng)信息等。按下h
鍵可以查看幫助信息,列出了可用的交互命令。
??查看資源利用情況: 注意查看系統(tǒng)的資源利用情況,特別是 CPU 和內存的使用率。如果某個進程占用了大量資源,可以考慮采取措施來優(yōu)化或終止該進程。
??退出 top
: 當完成分析后,可以按下q
鍵來退出 top
。
管理后臺進程
啟動后臺進程
??如果想要使某些程序在使用Shell的過程中始終運行,可以將它們放置到后臺。為了將某一程序放置到后臺,需要在命令行的末尾輸入一個與號(&),如下所示:
java -jar a.jar &
??上面的代碼指的是在后臺執(zhí)行java文件。
查看后臺進程
??如果想要檢查哪些命令在后臺運行,可以使用jobs命令,如下所示:
jobs
[ 1] stopped (tty output) vi/tmp/myfile
[ 2] Running find /usr -print > /tmp/allusrfiles &
[ 3] Running nroff -man /usr/man2/* >/tmp/ man2 &
[ 4]- Running nroff -man /usr/man3/* >/tmp/man3 &
[ 5] + Stopped nroff -man /usr/man4/* >/tmp/man4
jobs和ps的區(qū)別
??jobs
和 ps
是兩個不同的命令,用于查看系統(tǒng)中正在運行的進程和作業(yè),它們有以下主要區(qū)別:
??1. 功能和用途:
ps
(Process Status):ps
命令用于查看系統(tǒng)中所有進程的信息,包括它們的PID、狀態(tài)、CPU和內存使用情況等。它主要用于查看和管理進程。jobs
:jobs
命令用于查看當前shell會話中的作業(yè)(通常是由shell啟動的命令)。它主要用于查看和管理由當前shell會話啟動的作業(yè)。
??2. 應用范圍:
-
ps
可以用于查看系統(tǒng)中所有進程,包括后臺運行的系統(tǒng)進程和由其他用戶啟動的進程。 -
jobs
僅用于查看當前shell會話中的作業(yè),通常用于查看和管理當前用戶啟動的命令。
??3. 輸出格式: -
ps
通常以詳細的表格形式顯示進程信息,提供更多的細節(jié)。 -
jobs
顯示當前shell會話中的作業(yè)列表,通常包括作業(yè)號、狀態(tài)和命令。
??4. 用途: -
ps
通常用于全局系統(tǒng)級別的進程監(jiān)控,用于系統(tǒng)管理員或高級用戶查看系統(tǒng)中的進程情況。 -
jobs
用于shell會話中的作業(yè)控制,例如在后臺運行作業(yè)、掛起作業(yè)、恢復作業(yè)等。
??舉個例子,當你在終端中啟動一個長時間運行的命令,并且希望在后臺運行,你可以使用 &
符號來將命令放入后臺,然后使用 jobs
命令來查看后臺作業(yè)列表。而 ps
命令則用于查看系統(tǒng)中運行的所有進程,包括后臺進程和其他用戶的進程。
停止進程
kill -9 [進程pid]