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