1-10-RHEL7-Linux系統(tǒng)進程管理


時間:2018-05-30 姓名:魏文應


一、進程

  • 程序與進程:程序是靜態(tài)的(文件),進程是動態(tài)的(運行的程序)。
  • 進程和線程:一個程序至少有一個進程,一個進程至少有一個線程。
  • 進程之間內存是獨立 。
  • 線程之間內存共享 ,高并發(fā)好一些 。 安全性差一些。

查看進程命令:pstree (顯示內容Redhat7版本之后 ,和Redhat6以前的版本不一樣):

  • 進程樹

程序和進程的區(qū)別

  • 程序是靜態(tài)的,它只是一組指令的集合,不具有任何的運行意義。本身作為一次軟件資源長期保存;而進程是程序執(zhí)行的動態(tài)過程.它是動態(tài)概念,有一定的生命周期,它是動態(tài)產(chǎn)生和消亡的。

  • 進程和程序并不是一一對應的關系,相同的程序運行在不同的數(shù)據(jù)集上就是不同的進程;一個程序可以由多個進程公用

  • 進程還具有并發(fā)性和交往性,而程序卻是封閉的。

進程和線程的區(qū)別

  • 一個進程可以擁有多個線程,而一個線程同時只能被一個進程所擁有。

  • 線程不能單獨執(zhí)行,但是每一個線程都有程序的入口、執(zhí)行序列以及程序出口。它必須組成進程才能被執(zhí)行。

進程屬性

  • 進程ID(PID): 是唯一的數(shù)值,用來區(qū)分進程。
  • 父進程的ID(PPID): 啟動進程的用戶ID(UID)和所歸屬的組(GID)。
  • 進程狀態(tài): 狀態(tài)分為運行R、休眠S、僵尸Z。
  • 進程執(zhí)行的優(yōu)先級。
  • 進程所連接的終端名:以哪個終端登錄的。
  • 進程資源占用: 比如占用資源大?。▋却?、CPU占用量)。

二、進程管理工具:ps

進程查看命令:ps 。常用參數(shù)(選項):

參數(shù) 說明
-a 顯示所有用戶的進程
u 顯示用戶名和啟動時間
-x 顯示沒有控制終端的進程
-e 顯示所有進程,包括沒有控制終端的進程
-l 長格式顯示,詳細信息顯示
-w 寬行顯示,可以使用多個w進行加寬顯示

我們常用的選項組合是 -aux 。

查看進程信息

查看隸屬于 自己進程 詳細信息,也就是當前用戶的進程(不包括其它用戶啟動的進程)。

  • 顯示 用戶名啟動時間ps u

  • ps u 命令顯示的信息
標識 說明
USER 用戶名
PID 程進ID
%CPU 占用CPU時間和總時間的百分比
%MEM 占用內存與系統(tǒng)內存總量的百分比
VSZ 進程的虛擬大小
RSS 駐留集的大小,也可以理解為內存中頁的數(shù)量
TTY 進程啟動的終端,也就是這個進程是由哪個終端啟動的
STAT 進程當前狀態(tài)(S休眠狀態(tài),D不可中斷的休眠狀態(tài),R運行狀態(tài),Z僵死狀態(tài),T停止)
START 進程的啟動時間,指出進程是什么時候啟動的
TIME 進程自從啟動以后啟用CPU的總時間
COMMAND/CMD 進程的命令名
UID 用戶的id
PPID 父進程的進程號
NI 進程優(yōu)先級

其中 STAT 除了顯示進程當前狀態(tài),還經(jīng)常 追加顯示 下面的一些其它參數(shù):

狀態(tài)符號 說明
< 高優(yōu)先級
N 低優(yōu)先級
L 有些頁被鎖進內存
S 包含子進程
+ 位于后臺的進程組
l 多線程

**單獨顯示某個進程:ps -l | grep bash

  • 單獨顯示某個進程
  • BSD顯示風格標準顯示風格ps aux | grep bash 、 ps -el | grep bash

  • 顯示風格

三、top命令工具:實時顯示進程狀態(tài)

實時顯示進程狀態(tài)top (動態(tài)顯示),主要用來查看CPU使用情況、內存使用情況、以及系統(tǒng)運行狀態(tài)等信息。前五行是整個系統(tǒng)的整體信息:

  • 第一行顯示的內容(系統(tǒng)信息):

  • top命令內容意思第一行
顯示 說明
22:04:01 當前時間
up 1 day, 16:46 系統(tǒng)運行時間
3 users 當前登錄用戶數(shù)
load average: 0.26, 0.22, 0.16 系統(tǒng)負載,即任務隊列的平均長度。 三個數(shù)值分別為 1分鐘、5分鐘、15分鐘前到現(xiàn)在的平均值。
  • 第二行顯示的內容(進程信息,多個CPU的時候,這里可以是多行):

  • top命令內容意思第二行
顯示 說明
Tasks: 256 total 進程總數(shù)
1 running 正在運行的進程數(shù)
255 sleeping 睡眠的進程數(shù)
0 stopped 停止的進程數(shù)
0 zombie 僵尸進程數(shù)
  • 第三行顯示的內容(CPU信息,多個CPU的時候,這里可以是多行):

  • top命令內容意思第三行
顯示 說明
6.6.0% us 系統(tǒng)用戶進程使用CPU百分比
4.3% sy 內核中的進程占用CPU百分比
0.0% ni 用戶進程空間內改變過優(yōu)先級的進程占用CPU百分比
89.1% id 空閑CPU百分比
0.0%wa IO等待占用CPU的百分比
0.0%hi 硬中斷(Hardware IRQ)占用CPU的百分比
0.1%si 軟中斷(Software Interrupts)占用CPU的百分比
0.0%st Steal Time 切片時間CPU占比。CPU資源是切換使用的,比如這個進程用一會,那個進程用一會。Steal Time 反映虛擬CPU等待實際CPU響應的情況,如果等待時間為100%時,說明虛擬CPU得不到實際CPU分配的資源,這是一種糟糕的情況。當系統(tǒng)運行在虛擬機上時,這個值可以關注。
    • 第四、五行顯示的內容(物理內存和swap交換區(qū)):
  • top命令內容意思第四、五行

top工具內部快捷鍵

當你使用 top 命令,查看內存時,可以使用一些快捷鍵:

快捷鍵 功能
空格鍵 手動刷新一下(默認3秒刷新一次)
M(大寫) 按內存排序,內存使用高的排在上面
P(大寫) 按CPU排序 ,CPU資源用得多的排在上面
h 幫助
q 退出

五、pgrep管理工具:查看單個進程

pgrep 用來查看指定進程,pgrep 相當于 ps aux | grep ,比如查看 httpd 服務:pgrep httpd

  • pgrep查看進程

你測試查看httpd時,應該先啟動httpd:service start httpd。如果沒有安裝httpd,則安裝httpd:yum -y install httpd。如果httpd 啟動失敗,80端口被占用:

  • httpd80端口被占用

解決方法,有兩種方式可以使用:

  • 第一種方法是修改httpd的端口:

    vim /etc/httpd/conf/httpd.conf

  • httpd端口修改

然后就可以正常啟動httpd服務了:

service httpd start

  • 第二種是停掉目前占用80端口的服務,讓出端口給httpd使用:

  • 查看哪個服務占用了80端

六、pstree 管理工具:查看進程樹

用來查看 進程樹pstree

  • 進程樹

七、網(wǎng)絡管理

使用netstat工具

netstat 命令用于顯示各種網(wǎng)絡相關信息,如網(wǎng)絡連接,路由表,接口狀態(tài) 。

  • 常用命令帶參情況 netstat -anptu 。
參數(shù) 說明
-a或–all 顯示所有連接中的接口
-c或–continuous 持續(xù)列出網(wǎng)絡狀態(tài)
-C或–cache 顯示路由器配置的快取信息
-e或–extend 顯示網(wǎng)絡其他相關信息
-F或–fib 顯示FIB
-g或–groups 顯示多重廣播功能群組組員名單
-h或–help 在線幫助
-i或–interfaces 顯示網(wǎng)絡界面信息表單
-l或–listening 顯示監(jiān)控中的服務器的接口
-M或–masquerade 顯示偽裝的網(wǎng)絡連線
-n或–numeric 直接使用IP地址,而不通過域名服務器
-N或–netlink或–symbolic 顯示網(wǎng)絡硬件外圍設備的符號連接名稱
-o或–timers 顯示計時器
-p或–programs 顯示正在使用接口的程序識別碼和程序名稱
-r或–route 顯示Routing Table
-s或–statistice 顯示網(wǎng)絡工作信息統(tǒng)計表
-t或–tcp 顯示TCP傳輸協(xié)議的連接狀況
-u或–udp 顯示UDP傳輸協(xié)議的連接狀況
-v或–verbose 顯示指令執(zhí)行過程
-V或–version 顯示版本信息
-w或–raw 顯示RAW傳輸協(xié)議的連線狀況
-x或–unix 此參數(shù)的效果和指定”-A unix”參數(shù)相同
–ip或–inet 此參數(shù)的效果和指定”-A inet”參數(shù)相同

八、虛擬文件系統(tǒng) /proc /sys

Linux一切皆文件,設備(文件)可以通過讀寫來操作。

/proc:在內存中的系統(tǒng)進程信息

比如,查看cpu信息:cat /proc/cpuinfo。在比如查看內存信息 : cat /proc/meminfo 。

  • 開啟內核轉發(fā)功能: linux可以作為一個路由器使用。我們可以開啟路由轉發(fā)功能,并設置iptables。

    往/proc/sys/net/ipv4/ip_forward這個文件中寫入1,就開啟了ip路由功能。
    echo "1" >/proc/sys/net/ipv4/ip_forward

  • /sys :系統(tǒng)內核以及驅動的信息。

九、Linux后臺進程與前臺進程

Linux后臺進程:

  • 守護進程(Daemon),是運行在后臺的一種特殊進程。
  • 守護的意思就是不受終端控制;
  • Linux的大多數(shù)服務器就是用守護進程實現(xiàn)的,比如,Web服務器httpd等。

Linux前臺進程:

  • 用戶使用的有控制終端的進程。

進程的前臺與后臺切換

  • 讓命令后臺運行[命令] & 。 比如:sleep 100 &&這個符號用在命令的最后,讓sleep 100這個命令后臺執(zhí)行)。

  • 暫停前臺命令,讓其后臺掛起: ctrl鍵 + z鍵 。

  • 查看所有后臺進程: jobs (如果顯示進程號PID,則jobs -l)。

  • 后臺進程調到前臺運行: fg。

  • 啟動運行后臺暫停的進程,在后臺運行: bg。

  • 進程的前臺與后臺切換

十、kill和killall 終止進程

可以通過kill來 殺死進程,也就是 結束進程

  • 列出kill的信號列表: kill -l

  • kill信號列表
  • 殺死結束一個進程: kill 9 [進程號] 。

  • 殺死一組進程: killall [進程名],比如:killall httpd 。

十一、進程的優(yōu)先級管理

優(yōu)先級取值范圍為(-20,19),越小優(yōu)先級越高, 默認優(yōu)先級是0。

指定進程優(yōu)先級: nice -n 5 vim a.txt (使用優(yōu)先級5執(zhí)行vim a.txt產(chǎn)生的進程):

  • 進程優(yōu)先級

修改進程優(yōu)先級: nice -10 29155 (-10是進程優(yōu)先級,29155是進程PID)。

十二、screen 命令工具:終端命令行暫存

screen 有什么用? 比如,你在命令行終端執(zhí)行 ping www.baidu.com ,這時你關閉了終端命令行,那么 ping www.baidu.com 進程也會被終止,被殺死了。因為ping這個操作是由 終端派生的進程,終端進程退出了,子進程ping也會被殺死。但你不想ping結束呢?就可以用screen工具。

創(chuàng)建新窗口: screen 或者 screen -S name01 (“-S name01” 是給窗口命名,讓你容易識別)。

窗口后臺運行: 按下Ctrl鍵 + A鍵 + D鍵 。讓screen創(chuàng)建的窗口后臺運行,我們返回主窗口做其它操作。

查看srceen列表: screen -list 或者 screen -ls

切換到之前分離的窗口: screen -r name01(輸入窗口名稱或者ID號都可以)。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容