做爲初學者,Linux永遠是那麼神祕,高大上的內容我也不會,因此在這裏只能整理一下與管理相關的命令了,若是有不對的或不許確的地方,請指正。linux
可參考:Linux內核--進程管理與調度http://www.linuxidc.com/Linux/2014-08/105366.htmsession
做用:列出當前的進程,以及它們的樹狀結構多線程
用法:pstree [選項]ssh
-a: 顯示執行程序的命令與完整參數ide
在/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 [options] pattern
-u uid:effective user
-U uid:read user
-t TERMINAL:與指定的終端相關的進程
-l:顯示進程名
-a:顯示完整格式的進程名
-P pid:顯示此進程的子進程
[root@localhost ~]# pidof sshd
3987 2368 1062
[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 -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是top命令在功能上的一個升級命令,所以二者的顯示和使用習慣比較類似,可是htop命令須要手動安裝,而且在發行版光盤上沒有它的安裝包,須要經過其餘途徑得到,建議用yum指向的epel源安裝
htop的功能很強大,還能支持鼠標操做,顯示項目內容和top命令相似,這裏只說一下它的交互命令
u: 僅顯示指定用戶的進程
s: 以指定字段顯示
l: 顯示選定的進程打開的文件列表
s: 跟蹤選定的進程的系統調用
t: 以層級關係顯示各進程狀態
a: 將選定的進程綁定至某指定的CPU核心
更多幫助按F1鍵得到
用法: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 [options] pid [...]
-x:顯示詳細格式的信息
另外一種查看方式:cat /proc/PID/maps
-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
-kill processes by name
# killall [-SIGNAL] program
前臺做業(foregroud):經過終端啓動,且啓動後會一直佔據終端
後臺做業(backgroud):能夠經過終端啓動,但啓動後即轉入後臺運行(釋放終端)
如何讓做業運行於後臺?
(1) 運行中的做業
Ctrl+z
注意:送日後臺後,做業會轉爲中止態;
(2) 還沒有啓動的做業
# COMMAND &
注意:此類做業雖然被送日後臺,但其依然與終端相關;若是但願把送日後臺的做業剝離與終端的關係:
# nohup COMMAND &
查看全部的做業:
# jobs
可實現做業控制的經常使用命令:
# fg [[%]JOB_NUM]:把指定的做業調回前臺
# bg [[%]JOB_NUM]:讓送日後臺的做業在後臺繼續運行
# kill %JOB_NUM:終止指定的做業
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 [-n] NICE PID... 查看Nice值和優先級: # ps axo pid, ni, priority, comm