Linux入門(進程)

Linux入門之 進程

進程介紹

  Linux系統中的幾乎任何行動都會以進程的形式進行。若是你用網絡瀏覽器查看網頁,瀏覽器就做爲進程運行。若是鍵入bash shell的命令行,這個shell就做爲進程運行。若是你用chmod命令來更改文件權限,chmod就做爲單獨的進程來執行。進程是完成工做的形式,linux內核的基本職責就是爲進程提供作事情的地方,不讓彼此撞車。linux

進程是已啓動的可執進程序的運行實例,進程有如下組成部分:

1. 已分配內存的地址空間

2. 安全屬性,包括全部權憑據個特權

3. 程序代碼的一個或多個執行進程

4. 進程狀態
shell

進程與程序區分
程序:二進制文件,靜態。
進程:是程序運行的過程,動態,有生命週期及運行狀態瀏覽器

進程的屬性:

1. 進程ID(PID):是惟一的值,用來區分進程

2. 父進程(PPID)

3. 啓動進程的用戶ID(UID)和所歸屬的組(GID)

4. 進程狀態:分爲運行R,休眠S,殭屍Z

5. 進程執行的優先級

6. 進程所鏈接的終端名

7. 進程資源佔用:如內存、CPU等
緩存

進程(Process)是一個程序在其自身的虛擬地址空間中的一次執行活動。之因此要建立進程,就是爲了使多個程序能夠併發的執行,從而提升系統的資源利用率和吞吐量。安全

程序只是一個靜態的指令集合;而進程是一個程序的動態執行過程,它具備生命期,是動態的產生和消亡的。bash

進程家族

  引導系統時,Linux內核的一個職責是啓動第一個進程(一般是/sbin/init)。由於一個業已存在的進程繼續派生,全部其餘進程得以啓動。網絡

孤兒進程

  若是說處理子進程終止後的善後事宜是父進程的職責的話,那麼若是父進程在子進程以前終止該怎麼辦?這個子進程就變成了孤兒進程。多線程

殭屍進程

  當進程退出,釋放大多數資源和它的父進程收集它的返回值、釋放剩餘資源這兩段時間之間,子進程處於一個特殊狀態,被稱爲殭屍進程(zombie)。每一個進程都會通過一個短暫的殭屍狀態。併發

五種進程狀態命令行

可運行(R)
      處於可運行狀態的進程,一旦有機會,就會訪問CPU。多個進程能夠(並且常常)處於能夠運行狀態,可是由於在任何給定時間內只有一個進程能夠在CPU上運行,因此實際上這些進程中只有一個在任何給定的實例上運行。

自願(可中斷的)睡眠(s)
      從名稱中能夠看出,處於自願睡眠狀態的進程選擇處於該狀態。一般,這一進程在某事發生以前無事可作。

非自願(不可中斷或強制)睡眠\(D\)
      內核迫使進程進入非自願睡眠狀態。該進程並無選擇休眠,它情願運行以便作完事情。當資源被釋放時,內核會喚醒進程並將設置爲可運行狀態。

中止的(掛起的)進程(T)
      用戶有時決定掛起進程,被掛起的進程在被用戶從新啓動前不會執行任何操做。

殭屍進程(Z)
    每一個快要終止的進程會經歷一個短暫的殭屍狀態,然而有時有些進程會一直停留在殭屍狀態。


靜態任務管理器

ps - report a snapshot of the current processes

語法

ps [options]

命令選項:

a: 顯示跟當前終端關聯的全部進程

u: 基於用戶的格式顯示

x: 顯示全部進程,不以終端機來區分

U: 顯示某用戶ID全部的進程

A: 顯示全部程序

e: 此參數的效果和指定」A」參數相同

f: 用ASCII字符顯示樹狀結構,表達程序間的相互關係

o: 自定義輸出格式

ps -aux 輸出解釋

USER: 進程擁有者

PID: pid

%CPU: 佔用的 CPU 使用率

%MEM: 佔用的內存使用率

VSZ: 佔用的虛擬內存大小

RSS: 佔用的內存大小

TTY: 終端的次要裝置號碼 (minor device number of tty)

STAT: 該進程的狀態:

D: 不可中斷的靜止

R: 正在執行中

S: 靜止狀態

T: 暫停執行

Z: 不存在但暫時沒法消除

W: 沒有足夠的內存分頁可分配

<: 高優先序的進程

N: 低優先序的進程

L: 有內存分頁分配並鎖在內存內 (即時系統或捱A I/O)

s 表示進程是控制進程

l 表示進程是多線程

+表示當前進程運行在前臺

START: 進程開始時間

TIME: 執行的時間

COMMAND:所執行的指令

COMMAND中帶[ ]的爲系統建立的進程,直接顯示路徑的爲用戶所建立的進程


動態管理進程

top命令

第一行:

當前時間    運行時間    當前登錄系統的用戶數量

load average後面的三個數字分別表示距離如今一分鐘,五分鐘,十五分鐘的負載狀況。

第二行:

Tasks: 165 total  -總進程數爲165

1 running  -正在運行的進程數

162 sleeping  -睡眠的進程數

2 stopped  -中止的進程數

0 zombie  -殭屍進程數

第三行:

0.3 us  -系統用戶進程使用CPU百分比

0.3 sy  -內核中的進程佔用CPU百分比

0.0 ni  -用戶進程空間內改變過優先級的進程佔用CPU百分比

99.3 id  -空閒的CPU百分比

0.0 wa  -CPU等待I/O完成的時間總量

0.0 hi  -硬中斷佔比

0.0 si  -軟中斷佔比

0.0 st  -虛擬機佔用物理的時間,例如物理機運行了KVM,則表示KVM佔用物理機的CPU時間

第四行:

Mem: 物理內存

1005480 total  -物理內存總量

73036 free  -空閒內存總量

446528 used  -使用的物理內存總量

485916 buff/cache  -內核緩存內存量

第五行:

Swap: 交換內存

2097148 total  -交換分區總量

2097148 free  -空閒交換分區總量

0 used  -使用的交換分區總量

397568 cached  -可利用內存總量

第六行:

PID  -進程號

USER  -進程管理用戶

PR  -進程優先級

NI  -nice值  負值表示高優先級,正值表示低優先級

VIRT  - -虛擬內存

RES  -物理內存

SHR  -共享內存

S  -進程狀態

%CPU  -上次更新到如今的CPU時間佔用百分比

%MEM  -進程使用的物理內存百分比

TIME+  -進程使用的CPU時間總計,單位1/100秒

COMMAND  -進程名稱

top快捷鍵:

s: 默認三秒刷新一次,按s修改刷新時間

空格: 當即刷新

q: 退出

P; 按CPU排序按CPU排序

M: 按內存排序

T: 按時間排序

數字1: 顯示每一個內核的CPU使用率

u/U: 指定顯示的用戶

h: 幫助


進程管理

kill命令

kill - terminate a process

語法

kill[選項][進程號]

選項

-l 打印信號編號,若果不加信號的編號參數,則使用「-l」參數會列出所有的信號名稱

-a 當處理當前進程時,不限制命令名和進程號的對應關係

-p 只打印相關進程的進程號,而不發送任何信號

-s 指定發送信號

Kill命令工做原理:

向Linux內核發送一個系統操做信號和某個程序的進程標識號,而後系統內核就能夠對進程標識號指定的進程進行操做

信號

HUP 1 重載配置文件

INT 2 中斷(同 Ctrl + C)

QUIT 3 退出(同 Ctrl + )

TERM 15 終止

KILL 9 強制終止

CONT 18 繼續(與STOP相反, fg/bg命令)

STOP 19 暫停(同 Ctrl + Z)

應注意,信號使進程強行終止,這常會帶來一些反作用,如數據丟失或者終端沒法恢復到正常狀態。發送信號時必須當心,只有在萬不得已時,才用kill信號(9),由於進程不能首先捕獲它。要撤銷全部的後臺做業,能夠輸入kill 0。由於有些在後臺運行的命令會啓動多個進程,跟蹤並找到全部要殺掉的進程的PID是件很麻煩的事。這時,使用kill 0來終止全部由當前shell啓動的進程,是個有效的方法。

kill -9 強制結束

kill -0 檢測進程是否存在

killall命令

Linux系統中的killall命令用於殺死指定名字的進程(kill processes by name)

命令格式:

killall[選項][進程名]

命令選項:

-I 忽略小寫

-g 殺死進程組而不是進程

-i 交互模式,殺死進程前先詢問用戶

-l 列出全部的已知信號名稱

-q 不輸出警告信息

-s 發送指定的信號

-v 報告信號是否成功發送

-w 等待進程死亡

—help 顯示幫助信息

—version 顯示版本顯示

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

-r:使用正規表達式匹配要殺死的進程名稱

-p:殺死進程所屬的進程組


進程優先級管理

如何調整優先級

nice命令

nice - run a program with modified scheduling priority

語法

nice [OPTION] [COMMAND [ARG]…]

選項

-n add integer N to the niceness (default 10)

設定一個優先級 默認爲10

linux porcess 優先級爲-20 - 19 數字越小優先級越大

調整優先級命令nice

nice --19 ping -c 500 localhost -19優先級

nice -19 ping -c 500 localhost 19優先級

renice命令

renice - alter priority of running processes

renice -n -19 -p 16863

renice -n -20 -u root

0 (用戶 ID) 舊優先級爲 -10,新優先級爲 -20

普通用戶只能下降程序的優先級 不能提升程序優先級,root隨便


用nice以優先級爲8運行ping命令

使用 top -b 命令查看ping目前的優先級,爲8級

使用renice更改ping的優先級

更改爲功

相關文章
相關標籤/搜索