Linux進程及做業管理相關命令

 

做爲初學者,Linux永遠是那麼神祕,高大上的內容我也不會,因此在這裏只能整理一下與管理相關的命令了,若是有不對的或不許確的地方,請指正。linux

可參考:Linux內核--進程管理與調度http://www.linuxidc.com/Linux/2014-08/105366.htmsession

 

pstree:顯示進程狀態樹

做用:列出當前的進程,以及它們的樹狀結構多線程

用法:pstree [選項]ssh

  • -a: 顯示執行程序的命令與完整參數ide

 

ps:查看系統中進程的狀態

在/proc/目錄中包含了進程和內核模擬生成的僞文件,該路徑下每一個進程用本身的PID命名目錄,目錄裏面包含了這個進程運行的各個參數。ui

內核參數在/proc/sys/目錄中,可設置其值動態調整內核運行的特性。this

用法:ps [選項]spa

選項有三種風格操作系統

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.

經常使用選項組合之一:

# pstree aux

  • a:全部與終端相關的進程

  • x:全部與終端無關的進程

  • u:以用戶爲中心組織進程狀態信息顯示

顯示字段含義:

USER 表示此進程以哪一個用戶身份運行

PID 表示進程號

%CPU 表示佔用cpu利用率百分比

%MEM 表示佔用物理內存百分比

VSZ 表示虛擬內存集大小,包含共享的數據空間

RSS 表示常駐內存集大小,位於物理內存,並不能被交換出去

TTY 表示此進程從哪一個終端啓動,問號?表示與終端無關的進程

STAT 表示進程狀態

R:running

S:interruptable sleeping

D:uninterruptable sleeping

T:Stopped

Z:zombie

+:前臺進程

l:多線程進程

N:低優先級進程,通常表示該進程優先級別數值是負數

<:高優先級進程

s:session leader

START 表示進程起始時間

TIME  表示累計佔用cpu的時間

COMMAND 表示由哪一個命令啓動,帶中括號的是內核線程

 

經常使用選項組合之二:

# pstree –ef

  • -e : 顯示全部進程

  • -f : 顯示完整格式的進程信息

部分字段含義:

PPID 表示此進程的父進程號

C 表示cpu的佔用百分比

經常使用選項組合之三:

# ps –eFH

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

  • -H:以層級結構顯示進程的相關信息

部分字段含義:

SZ 表示虛擬內存集大小,包含共享的數據空間

PSR 表示此進程運行在哪顆cpu上

經常使用選項組合之四:

# ps –eo <FIELD1,FIELD2,…>

# ps axo <FIELD1,FIELD2,…>

  • o FIELD1,FIELD2,… : 自定義要顯示的字段列表,以逗號分隔

經常使用的FIELD:pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio

ni : nice值

pri : priority 優先級

rtprio : real time priority,實時優先級

pcpu : cpu的利用率

pgrep:查找匹配條件的進程

用法:pgrep [options] pattern

  • -u uid:effective user

  • -U uid:read user

  • -t  TERMINAL:與指定的終端相關的進程

  • -l:顯示進程名

  • -a:顯示完整格式的進程名

  • -P pid:顯示此進程的子進程

pidof:根據進程名,取其pid

[root@localhost ~]# pidof sshd  
3987 2368 1062

uptime:顯示系統時間、用戶登陸數、運行時長及平均負載

[root@localhost ~]# uptime  
00:06:21 up  7:12,  2 users,  load average: 0.00, 0.01, 0.05    

load average:等待運行的進程隊列的長度在過去1分鐘、5分鐘和15分鐘的平均負載

top:顯示系統當前進程狀態

用法:

# top -d 2 :指定2秒延遲時長刷新顯示,單位是秒

# top -b :批模式

# top -bn 2 :在批模式下,共顯示2批

 

顯示含義:

第一行信息是uptime命令的顯示內容

第二行顯示的是全部啓動的、目前運行的、掛起( Sleeping )的和無用( Zombie )的進程數量

第三號顯示的是目前CPU的使用狀況,依次爲

us用戶使用比例

sy系統佔用的比列

ni調整之後額外佔用的時間百分比

id閒置( Idle)比例

wa等待IO完成佔用的百分比

hi處理硬件中斷消耗的百分比

si處理軟件中斷消耗的百分比

st被當前主機上虛擬化技術所分走的百分比

第四行顯示物理內存的使用狀況,包括總的可使用內存、空閒內存、已用內存、buff/cache佔用的內存

buffers與cached都是內存操做,用來保存系統曾經打開過的文件以及文件屬性信息,這樣當操做系統須要讀取某些文件時,會首先在buffers與cached內存區查找,若是找到,直接讀出傳送給應用程序,若是沒有找到須要數據,才從磁盤讀取。    
buffers是用來緩衝塊設備作的,它只記錄文件系統的元數據(metadata)以及tracking in-flightpages,而cached是用來給文件作緩衝。更通俗一點說:buffers主要用來存放目錄裏面有什麼內容,文件的屬性以及權限等等。而cached直接用來記憶咱們打開過的文件和程序。

第五行顯示交換分區的使用狀況,包括總的、空閒的、已用的和可用的內存空間大小吐舌鬼臉

第六行顯示項目以下:


PID : 進程號

USER : 進程全部者

PR : 進程的優先級別

NI : nice值眨眼

VIRT : 進程佔用的虛擬內存值

RES : 進程佔用的物理內存值

SHR : 進程佔用的共享內存值

S : 進程的狀態,參見ps命令

%CPU : 該進程佔用的CPU使用率

%MEM : 該進程佔用的物理內存的百分比

TIME+ : 進程啓動後在CPU上運行的時長

COMMAND : 進程啓動的啓動命令


在top命令使用的過程當中,還可使用一些交互式的命令來完成其餘功能,可用如下快捷鍵:

M: 根據駐留內存大小進行排序

P: 根據cpu使用百分比進行排序

T: 根據累計時間進行排序

l: 是否顯示平均負載和啓動時間

t: 是否顯示進程和cpu狀態相關信息

m: 是否顯示內存相關信息

c: 是否顯示完整的命令行信息

s:修改刷新時間間隔

<空格鍵>:當即刷新

k:終止指定的進程

q: 退出top

htop:系統狀態顯示

htop是top命令在功能上的一個升級命令,所以二者的顯示和使用習慣比較類似,可是htop命令須要手動安裝,而且在發行版光盤上沒有它的安裝包,須要經過其餘途徑得到,建議用yum指向的epel源安裝烏龜

htop的功能很強大,還能支持鼠標操做,顯示項目內容和top命令相似,這裏只說一下它的交互命令


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

s: 以指定字段顯示

l: 顯示選定的進程打開的文件列表

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

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

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

更多幫助按F1鍵得到

vmstat:報告虛擬內存統計信息

用法:vmstat [options] [delay [count]]

# vmstat 2 5  //表示每5秒採集一次,共採集5次

  • -s : 顯示內存相關統計信息

  • -d : 顯示磁盤相關統計信息

  • -S : Switches outputs between 1000  (k),  1024  (K),  1000000  (m),  or 1048576  (M) bytes.  Note this does not change the swap (si/so) or block (bi/bo) fields.

顯示字段含義:

------procs------

r:等待運行的進程的個數;CPU上等待運行的任務的隊列長度  
b:處於不可中斷睡眠態的進程個數;被阻塞的任務隊列的長度


------memory------    
swpd:交換內存使用總量;    
free:空閒的物理內存總量;    
buffer:用於buffer的內存總量;    
cache:用於cache的內存總量;    

------swap------  
si:數據進入swap中的數據速率(kb/s)    
so:數據離開swap的速率(kb/s)


------io------    
bi:從塊設備讀入數據到系統的速度(kb/s)    
bo:保存數據至塊設備的速率(kb/s)

 

------system------  
in:interrupts,中斷速率    
cs:context switch, 上下文 切換的速率


------cpu------

us: user space  
sy:system    
id:idle    
wa:wait    
st: stolen

若是bi和bo長期不等於0,則表示物理內存過小

pmap 報告進程內存映射表

用法:pmap [options] pid [...]  
-x:顯示詳細格式的信息    
   
另外一種查看方式:cat  /proc/PID/maps

 

kill

-terminate a process

做用:用於向進程發送信號,以實現對進程的管理

顯示當前系統可用信號:

# kill –l

每一個信號的標識方法有三種:  
1) 信號的數字標識    
2) 信號的完整名稱    
3) 信號的簡寫名稱

向進程發信號:

# kill  [-s signal|-SIGNAL]  pid...

經常使用信號:  
1) SIGHUP:無須關閉進程而讓其重讀配置文件    
2)SIGINT:終止正在運行的進程,至關於Ctrl+c    
9)SIGKILL:殺死運行中的進程    
15)SIGTERM:終止運行中的進程    
18)SIGCONT    
19)SIGSTOP

killall

-kill processes by name

# killall  [-SIGNAL]  program

 

jobs


前臺做業(foregroud):經過終端啓動,且啓動後會一直佔據終端    
後臺做業(backgroud):能夠經過終端啓動,但啓動後即轉入後臺運行(釋放終端)    
           
如何讓做業運行於後臺?    
(1) 運行中的做業    
Ctrl+z

注意:送日後臺後,做業會轉爲中止態;  
(2) 還沒有啓動的做業    
# COMMAND &    
   
注意:此類做業雖然被送日後臺,但其依然與終端相關;若是但願把送日後臺的做業剝離與終端的關係:    
# nohup  COMMAND  &    
   
查看全部的做業:    
# jobs    
   
可實現做業控制的經常使用命令:    
# fg  [[%]JOB_NUM]:把指定的做業調回前臺    
# bg  [[%]JOB_NUM]:讓送日後臺的做業在後臺繼續運行    
# kill  %JOB_NUM:終止指定的做業    


nice:改變優先權等級

0-139 種優先級,數字越小,優先級越高

100-139 :用戶可控制

0-99: 內核調整的


優先級高能夠:

一、得到更多的CPU運行時間

二、更優先得到運行的機會


可經過nice值調整的優先級範圍:100-139

其nice值分別對應於:-20, 19


進程啓動時,其nice值默認爲0,其優先級是120

nice 值:數值越小,優先級調高

普通用戶只能調大本身進程的nice值

僅管理員可調低nice值

 

以指定的nice值啓動並運行命令  
# nice  [OPTION]  [COMMAND [ARGU]...]    
選項:-n NICE    
# nice –n 1 ls > 1.txt

renice

容許用戶修改一個正在運行的進程的優先級

# renice  [-n]  NICE  PID...                查看Nice值和優先級:    # ps  axo  pid, ni, priority, comm 

相關文章
相關標籤/搜索