标签:linux进程及作业管理的四大长老-htop/ dstat /top/ ps
一、进程简介
进程是linux用来表示正在运行的程序的一种抽象概念,程序内存的使用,处理器时间和I/O资源就是通过这个对象进行管理和监视的。
一个程序要先运行在用户空间,当他需要去使用硬件资源的时候,就不得不去调动内核才能取得使用权,这时候调动内核,进入内核空间,当内核处理完毕需求之后,将指令返回给用户,一个调用完成。
进程会以时间片段在CPU运行的,CPU以一根时间线被划分成无数个片段;当一个进程运行到某个阶段,需要暂时终止的时候,需要保存一个进程运行的现场,叫保存现场;执行到某片段的时候,需要中断,当再需要执行的时候,恢复现场。
运行中的程序的某个副本才叫进程;进程有生命周期,进程时活动的。
内核为每个进程都要创建一个运行信息,存储每一个进程的相关信息,及进程的结构体,即task struct。这里面的信息有:
1.进程的地址空间映射;
2.进程的当前状态(睡眠状态,停止状态,可运行状态等)
3.进程执行的优先级;
4.进程已用资源的信息;
5.进程已打开的文件和网络端口的信息;
6.进程的信号掩码(一个记录,确定要封锁哪些信号)
7.进程属主。
一个进程由一个地址空间和内核内部的一组数据结构组成。地址空间是内核标记出的供进程使用的一组内存页面。它包含了进程只在执行的代码和库,进程变量,进程栈以及进程运行时所需要的各种其他信息。
一个线程是一个进程内执行了一次fork()的结果,线程继承了包含他的进程的许多属性(进程的地址空间等)。
进程的调度优先级决定了他接受到CPU的时间的多少。nice值决定了进度优先级。静态nice值越小,优先级越高。
为了创建一个新的进程,一个进程就会用系统fork来复制自身,fork创建原进程的一个副本,这个副本大致与父进程相同,新进程拥有不同的PID。
fork具有独一无二的特性,它能够返回两个值,对子进程来说,返回为0,对父进程来说,返回一个PID。
linux系统最独特进程时init进程。进程号总为1,他是其他进程的GOD,除了内核创建的几个进程外,其他所有进程都是他的后代。
二、linux系统上进程查看及管理工具:
CentOS 5:SysV init
CentOS 6:upstart
CentOS 7:systemd
三、 htop命令
3.1安装hotp方法(以阿里云网站为环境)
Ali.repo内部内容(CentOS 6为例)
[epel]
name=Ali EPEL
baseurl=http://mirrors.aliyun.com/epel/6/$basearch/
gpgcheck=0
3.2 htop显示
右边tasks只是用户空间的进程;
支持鼠标,点或者按F1进入帮助选项
子命令:
u:查看某个用户进程 H:显示或隐藏用户线程 K;隐藏或显示内核线程
F6:指定排序 F:光标在哪个线程 PMT:排序方式 c:标记出一个进程和子进程
a:将选定的进程绑定至某指定的CPU核心; l:跟踪显示某个进程打开的所以文件
s:跟踪选定的进程的系统调用; t:以层级关系显示各进程状态;
选项:
-d #:指定延迟时间间隔;
-u UserName:仅显示指定用户的进程;
-s COLUME:以指定字段进行排序;
可以利用子命令进行想要的显示。
四、dstat命令
4.1 dstat:用于生成资源信息统计的工具。默认给的选项是-cdngy
4.2 格式:dstat [-afv] [options..] [delay [count]]
常用选项:
-c, --cpu:显示cpu相关信息;
-C #,#,...,total
-d, --disk:显示磁盘的相关信息
-D sda,sdb,...,tobal
-n:Interface的相关统计数据;
-g:显示page相关的速率数据;
-m:Memory的相关统计数据
-p:显示process的相关统计数据;
-r:显示io请求的相关的统计数据;
-s:显示swapped的相关统计数据;
-y:system
示例:
--aio:统计异步IO
--ipc:统计进程间各自通信信息(消息队列,信号量,共享内存)
--lock:文件锁信息:
--tcp:动态显示TCP状态各连接状态信息的数量
--udp:动态显示UDP状态各连接状态信息的数量
--raw :裸套接字相关信息
--socket 用来显示tcp udp端口状态
示例:
#还可显示占用资源量较大的进程
--top-cpu:显示最占用CPU的进程;
--top-io:最占用io的进程;
--top-mem:最占用内存的进程;
--top-lantency:延迟最大的进程;
四、top命令
4.1显示linux的进程信息
4.2 排序:
P:以占据CPU百分比排序;
M:以占据内存百分比排序;
T:累积占用CPU时间排序;
首部信息分为三块:
uptime信息:l命令
tasks及cpu信息:t命令
内存信息:m命令
其中第一行信息解释:
显示系统时间、运行时长及平均负载;过去1分钟、5分钟和15分钟的平均负载;等待 运行的进 程队列的长度;
第三行:
us:用户空间进程占用的CPU百分比
sy:内核空间进程占用的CPU百分比
ni:用于nice值调整占用的CPU百分比
id:空闲百分比
wa:等待IO消耗的时间CPU百分比
hi:处理硬件中断消耗的CPU百分比
si:处理软件终端小号的CPU百分比
st:被虚拟环境偷走的CPU百分比
进程状态字段含义:
PR:进程优先级
NI:nice值
VIRT:虚拟内存集
RES:常驻内存集
SHR:共享内存空间
S:当前状态
%CPU:占用CPU时间百分比
%MEM:占用内存百分比
TIME+:运行时间
退出命令:q
修改刷新时间间隔:s
终止指定的进程:k
使用选项:
-d #:指定刷新时间间隔,默认为3秒;
-b:以批次方式显示;
-n #:显示多少批次;
五、ps命令
5.1 ps:报告当前进程的信息
ps - report a snapshot of the current processes.
启动进程的方式:
系统启动过程中自动启动;与终端无关的进程
用户通过终端启动:与终端相关的进程
选项:
a:所有与终端相关的进程
x:所有与终端无关的进程
u:以用户中心组织进程状态信息显示
-e:显示所有进程
-f:显示完整格式的进程信息
-F:显示完整格式的进程信息
-H:以层级结构显示进程的相关信息;
5.2常用组合之一 aux
显示的第一行的意义:
VSZ:虚拟内存集;
RSS:Resident Size,常驻内存集;
STAT:状态
R:running 运行中状态
S:interruptable sleeping 可中断睡眠状态
D:uninterruptable sleeping 不可中断睡眠状态
T:Stopped 停止状态
Z:zombie 僵死状态
+:前台进程
l:多线程进程
N:低优先级进程
<:高优先级进程
s:session leader
5.3常用组合之二 -ef
显示的第一行的意义:
PPID:父进程
C:CPU的占用百分比
STIME:启动时间
TTY:与何终端相关
TIME:CPU累积运行时间
5.4常用组合之三 -eFH
显示的第一行的意义:
PSR:运行于哪颗CPU之上
SZ:使用掉的内存大小
5.5常用组合之三 -ex ,axo
o field1,field2....:自定义要显示的字段列表,以逗号隔开
常用的field:pid,ni,pri,psr,pcpu,stat,comm,tty,ppid,rtprio
ni:nice值
pri:priority,优先级
rtprio:real time priority,实时优先级
linux进程及作业管理的四大长老-htop/ dstat /top/ ps
标签:linux进程及作业管理的四大长老-htop/ dstat /top/ ps
原文地址:http://1832924799.blog.51cto.com/11226449/1762091