歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

Linux 進程和作業管理

Linux進程和作業管理

=================================================================

內核的功能:進程管理(進程調用,保存現場,恢復現場)、文件系統、網絡功能、驅動功能、安全功能

process:運行中的程序的一個副本:

存在生命周期

linux內核存儲進程信息的固定格式:task struct(任務結構)

多個任務的task struct組件的鏈表:task list(任務列表)

進程創建:

init進程是由內核創建,其余的進程都有父進程創建。

進程優先級:

0-139:

1-99:實時優先級

100-139:靜態優先級

**數字越小,優先級越高**

nice值:-20,19

進程類型:

守護進程:daemon:在系統引導過程中啟動進程,跟終端無關的進程

交互式進程(前台進程):跟終端有關,通過終端啟動的進程

**注意:也可以把前台啟動的進程送往後台,以守護模式運行

進程狀態:

運行態:runing

就緒態:ready

睡眠態:

可中斷:interruptable

不可中斷:uninterruptable

停止態:暫停於內存中,但不會被調度,除非手動啟動之:stopped

僵死態:zombie

進程的分類:

cpu-bound

IO-bound

推薦書籍:《Linux內核設計與實現》、《深入理解Linux內核》

啟動進程的方式:

系統自啟動,與終端無關;用戶通過終端啟動,與終端相關的進程。

=================================================================

進程管理***

Linux系統上的進程查看及管理工具:pstree、ps、pldof、pgrep、top、htop、glances、pmap、vmstat、dstat、kill、job、bg、jg、nohup、nice、renice、killall...

-----------------------------------------------------------------

pstree命令:

display a tree of processes

centos6所有進程的父進程是init。centos7所有進程的父進程是syetemd。

pstree -p 查看進程樹並顯示pid

pstree -u 查看進程樹並顯示用戶

-----------------------------------------------------------------

ps命令:

report a snapshot of the current processes.當前進程的快照

###/proc/:內核中的狀態信息:

內核參數:

可設置其值從而調整內核運行特性的參數:/proc/sys/

狀態變量:其用於輸出內核中統計信息或狀態信息,僅用於查看###

ps [options]

選項三種風格:

1 UNIX options, which may be grouped and must be

preceded by a dash.

2 BSD options, which may be grouped and must not be

used with a dash.

3 GNU long options, which are preceded by two dashes.

選項:

a:所有與終端相關的進程

x:所有不與終端相關的進程

[kthreadd]==>>[]表示內核進程。pstree是看不到[]

u:以用戶為中心

user 進程用戶

pid 進程的標識號

%CPU cpu使用率

%MEM 內存的使用率

VSZ 虛擬內存使用量。虛擬內存集

RSS 物理內存使用量。常駐內存集

TTY 控制台

STAT 進程狀態:

r 運行,S:可中斷睡眠,D:不可中斷睡眠,T:停止,z:僵死,+:前台進程,l:多線程,N:低優先級進程,<:高優先進程,s:會話引導

START 開啟進程的時間

TIME 占用cpu的時間

COMMAND 終端上進程的名稱

-e:顯示所有進程

-f:

常用組合三:-ef組合: C cpu占用百分比

STIME 啟動時間

TIME 累積使用時間

CMD 啟動此進程的命令

-F: 顯示完整格式的進程信息。

PSR :運行在那顆cpu之上

-H:以層級結構顯示進程信息

常用組合:-eFH,-eo axo **o一定寫在後面!

o file file...自定義顯示的字級列,以逗號分隔

常用的file:pid ni pri pcpu stat comm tty ppid rtprio

ni:nice值

pri:priority(進程)優先級

rtprio:real time priority,實時優先級

-----------------------------------------------------------------

pgrep pkill命令

look up or signal processes based on name and other

attributes=查找或基於名稱和其他的信號處理屬性

-u uid:

-U 顯示指定用戶的進程

-t 顯示指定的終端的進程

-l 顯示進程名

-a 顯示完整格式的進行名

-P 顯示此進程的子進程

-----------------------------------------------------------------

pidof 命令

根據進程名,取其pid

ex:

# pidof 進程名稱

-----------------------------------------------------------------

top命令

uptime:顯示系統時間,運行時長及平均負載==就是top命令輸出的第一行

平均負載:過去的1分鐘,5分鐘,15分鐘的平均負載

顯示的cpu信息解釋:

Cpu(s): 0.3%us, 0.3%sy, 0.0%ni, 99.0%id, 0.0%wa, 0.0%hi, 0.3%s

Cpu(s): cpu占用百分比

0.3%us, 用戶進程所占用cpu的百分比

0.3%sy, 內核空間的內核所占用cpu百分比

0.0%ni, nice調整以後所占用的u百分比

99.0%id, 空閒百分比

0.0%wa, 等待io完成所消耗的百分比

0.0%hi, 處理硬件中斷所占據的百分比

0.3%si, 處理軟件件中斷所占據的百分比

0.0%st, 被虛擬化程序所分走的百分比

排序:

P 以占據cpu的百分比排序

M 以占據內存百分比排序

T 累積占用cpu時間排序

************

top在執行過程中可以使用的按鍵命令

? 顯示可以輸入的命令

P 按照cpu使用率排序

M 按照內存使用率排序

N 按照pid來排序

T 按照cpu時間積累排序

k 殺死指定pid對應的進程

r 給予某個pid重新制定一個nice值

r pid nice值

q 退出

> 翻頁

< 翻頁

************

首部信息:uptime信息:l命令,tasks命令及cpu信息:t命令,內存信息:m命令

退出命令:q,修改刷新時間:s,終止指定的進程:k

-d #:指定刷新時間間隔,默認是3秒

-b:以批次方式顯示

-n#:顯示多少批次

top -u root //指定某人發起的所有進程

top -p 1 //查看pid為1所對應的進程狀態

-----------------------------------------------------------------

htop命令

此命令要單獨安裝。 ***擴展:安裝軟件的中良好途徑:epel***

-d #:指定延遲書劍

-u userName :僅顯示指定用戶的進程

-s colume:以指定字段進行排序

子命令:

l:顯示選定

s:跟蹤選定的進程的系統調用

t:以層級關系顯示各進程狀態

a:將選定的進程綁定至某指定的cpu核心

-----------------------------------------------------------------

vmstat命令

Report virtual memory statistics(報告虛擬內存統計)

vmstat [options][delay [ count]]

術語解釋:

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

1 0 0 1394972 76056 312680 0 0 3 6 13 11 0 0 100 0 0

procs:

r:等待運行的進程個數;cpu上等待運行的任務的對列長度。

b:處於不可中斷睡眠態的進程個數;被阻塞任務隊列的長度。

memory:

swpd:交換內存使用總量

free:空閒的物理內存容量

buff:用於buff的內存總量(緩沖)

cache:用於cache的內存總量(緩存)

swap

si (swapin) 數據進入swap中的速率(kb/s)

so (swapout)數據離開swap的速率(kb/s)

io

bi (blockin) 從塊設備讀入數據到系統的速率(kb/s)

bo (blockout) 保存塊設備數據的速率(kb/s)

system

in (interrupts)中斷速率

cs (context switch)上下文切換的速率

cpu

us user space

sy system

id idle

wa wait

st stolen

選項:-s

-----------------------------------------------------------------

pmap命令

report memory map of a process(報告內存映射表)

pmap [ -x | -d ] [ -q ] pids...

-x:顯示詳細格式的信息

另一種查看方式:

[root@zyl htop-1.0.2]# cat /proc/1/maps

-----------------------------------------------------------------

glances命令

-An eye on your system

具體安裝過程可見博文glances安裝。

可以監控本機也可以通過客戶端服務器模式監控其他機器。

glances [OPTIONS]

常用選項:

-b:以byte為單位顯示網上數據速率

-d:關閉磁盤i/o

-m:關閉mount模塊

-n:關閉network模塊

-t #:刷新時間間隔

-l:每個cpu的相關數據單獨顯示

-o:{HTML|CSV}:輸出格式

-f:/PATH/TO/SOMEDIR:設定輸出文件的位置

c/s模式下運行glances命令:

服務模式:

glances -s -B IPADDR(本機的某地址,用於監聽)

-s service。-B IP地址

客戶端模式:

lances -c IPADDR

-c client

-----------------------------------------------------------------

dstat命令

versatile tool for generati systeresourcestatistics(用於生成系統資源的多功能工具統計)

常用參數:

-c 只顯示cpu信息

-C 1 2 ..

-d --disk 顯示磁盤相關的信息

-D sda sdb ..

-g 顯示page相關的速率信息

-m 顯示內存的信息

-n interface相關的信息

-p 顯示process的相關統計數據

-r 心事io需求的相關統計數據

-s 顯示swapped的相關統計數據

--tcp --udp --raw --socket --ipc

--top-cpu顯示最占用cpu的進程

--top-io最占用io的進程

--top-mem最占用內存的進程

--top-lantency 延遲最大的進程

-----------------------------------------------------------------

kill 命令

terminate a process(終止一個進程):用於向進程發送信號,以實現進程的管理:

顯示系統當前的信號:kill -l signal

每種信號的標識方法有三種:

1.信號的數字標識

2.信號的完整名稱

3.信號的簡寫名稱

向進程發送信號:

kill [-s signal|-p] [--] pid...

常用的信號:

1) SIGHUP :無需關閉進程而讓其重置配置文件

2) SIGINT :終止正在運行的進程,相當於ctrl +c

9) SIGKILL : 殺死運行中的進程,強制殺死

15) SIGTER: 終止正在運行的進程,正常殺死

18) SIGCONT :進程繼續

19) SIGSTOP: 進程停止 相當於ctrl + z,jb

-----------------------------------------------------------------

killall 命令

kill processes by name

常用用法:

killall [-signal ] program(程序)

=================================================================

作業管理***

job:

前台作業(foregroup):通過終端啟動,且啟動後一直占據終端

後台作業(backgroup):通過終端啟動,但啟動後即轉入後台運行(釋放終端)

如何讓作業運行在後台?

1.運行中的作業

ctrl+Z

注意:送往後台,作業會轉為停止態

2.尚未啟動的作業

COMMAND &

注意:此類作業雖然被送往後台,但是其依然與終端有相關,如果終端停止,此類作業也停止。如果希望把送往後台的作業且脫離終端的關系(用下面的命令):

nohup COMMAND & :運行於後台且脫離終端模式

-----------------------------------------------------------------

查看所有的作業:

jobs

如:

[root@zyl /]# jobs

[1]+ Stopped vim a.txt [1]:作業號

-----------------------------------------------------------------

可實現作業控制的常用命令:

fg [%jobnumber] :指定的作業掉回前台

bg [%jobnumber] :讓送往後台的作業繼續運行

kill [%jobnumber] ==%不能取消。:終止指定的作業

-----------------------------------------------------------------

調整進程的優先級:

可通過nice值調整的優先級:100~139

分別對應於:-20,19

進程啟動時,其nice值默認為0,其優先級120

-----------------------------------------------------------------

nice命令

以指定的nice值並運行命令(開啟進程的時候指定的nice值)

nice [OPTION] [COMMAND [ARG]...]

-n nice

注意:只有管理員可調低nice值

-----------------------------------------------------------------

renice命令

修改進程的nice

renice {-n} nice pid

ex:

renice 10 13054 將nice修改為10

renice -10 16604 將nice修改為-10

-----------------------------------------------------------------

查看nice值和優先級

ps axo pid,ni,common,prioritiy

-----------------------------------------------------------------

為涉及的命令:sar ...

-----------------------------------------------------------------

總結命令:htop dsata top ps

=================================================================

網絡客戶端工具:

ping ftp lftp get hping traceroute lftp

ping命令: send ICMP ECHO_REQUEST to network hosts

icmp:互聯網消息控制協議:internet control message protocol

-c (count)ping包個數

-w ping命令的超時時長

-W 一次ping操作中, 等待對方響應的時長

-s 指明ping包的大小。默認是64byte

-----------------------------------------------------------------

hping命令 系統默認不安裝

--fast

--fasts

--flood

-----------------------------------------------------------------

traceroute命令

跟蹤從當前主機到目標主機之間經過的網關(路由設備)

-----------------------------------------------------------------

ftp命令

文件傳輸協議

基於ftp協議訪問ftp服務命令行客戶端工具

如下:

[root@zyl ~]# ftp [email protected]

-----------------------------------------------------------------

lftp命令

Sophisticated(精致的) file transfer program

用來取代ftp命令:

口令:

[root@zyl ~]# lftp -u ftp 192.168.21.128

口令:

lftp [email protected]:~> help

不用口令:

[root@zyl ~]# lftp -u ftp,ftp 192.168.21.128

lftp [email protected]:~>help

***支持tab自動補全***

-----------------------------------------------------------------

lftpget命令

get a file with lftp(1) 直接下載

-c:繼續此前的下載

-----------------------------------------------------------------

wget命令

下載工具

wget [option]... [URL]...

-b 在後台執行下載操作

-d 靜默模式,不顯示進度

-o 下載的文件的保存路徑

--limit-rate=amount 以指定的速率下載

=================================================================

本文出自 “randolph” 博客,轉載請與作者聯系!

Copyright © Linux教程網 All Rights Reserved