程序:放置在存储媒体中(硬盘,光盘,软盘等),为实体文件形式存在。
进程:运行中的程序。
服务:常驻内存的进程
系统先以fork 的方式复制一个与父进程相同的暂存进程,这个进程与父进程唯一-的差别就是PID不同,但是这个暂存进程还会多一个PPID的参数,就是父进程的进程标识符。然后暂存进程开始以exec 的方式加载实际要执行的程序,以上述图标来讲,新的程序名称为yyy,最终子进程的程序代码就会变成yyy。
R:running,该程序正在运作中。
S:sleep,该程序正处于睡眠状态,但可以被唤醒。
D:不可被唤醒的睡眠状态,通常该程序可能在等待I/O的情况(ex>打印)
T:stop,停止状态
Z:zombie,僵尸状态,进程已经终止,但无法被移除至内存外。
X:死亡状态,进程彻底结束,可回收该进程相关资源;几乎在进程状态变为X的瞬间就会被清理掉,所以很难捕捉到该状态进程
<:高优先级
N:低优先级
s:表示此为父进程,它还有子进程
+:在前台进程组
USER:用户名
PID:进程标识符
%CPU:占用cpu资源百分比
%MEM:占用内存资源百分比
VSZ:占用虚拟内存量(Kbytes)
RSS: 占用固定的内存量(Kbytes)
TTY:是在哪个终端上运行,与终端无关显示?
STAT:进程目前运行状态
START:被触发启动的时间
TIME:实际使用cpu的运作时间
COMMAND:该进程实际命令是什么
F:进程的标识;4代表为此进程权限为root;1代表此子进程仅fork复制而没有exec执行。
S:代表进程状态
UID:此进程被该UID所拥有。
PID:此进程的PID。
PPID:此进程的父进程PID。
C:代表cpu使用百分比
PRI:即Priority的缩写,代表此进程被cpu所执行的优先级,数值越小优先级越高。此值有核心动态调整,人为无法调整。
NI:即NICE的缩写,范围-20 至 19 ,数值越小优先级越高。
ADDR:与内存有关,指出该进程在内存哪个部分。如果是个running进程,一般显示为 – 。
SZ:此进程占用多少内存。
WCHAN:此进程是否运作中。是 显示为 – 。
TTY:登入者的终端机位置,若为远程显示为 pts/n。
TIME:使用cpu的时间,即此进程实际花费cpu运作的时间。
CMD:此进程触发的命令是什么。
命令:top [-d 数字] | top [-bnp]
-d:后接秒数,即整个进程界面更新的秒数,默认5秒
-b:批量执行top;通常搭配数据流重定向将批量top结果输出为文件
-n:与-b搭配,指定运行几次top
-p:指定PID
在top运行过程中可使用以下按键命令:
?:显示在top当中可执行的命令。
P:按cpu使用率排序。默认排序
M:按内存使用率排序。
N:按照PID排序。
T:按进程使用的cpu累计时间(TIME+)进行排序。
k:给予某个PID一个信号。
r:给予某个PID重新定制一个nice值。
q:离开top按键。
第一行:当前时间-系统运行了多久-已登录系统人数-系统在1分钟、5分钟、15分钟的平均负载。
第二行:当前进程总数-running状态数量-sleep状态数量-stop状态数量-zombie状态数量
第三行:cpu使用状况-用户运行的程序占用cpu比例-系统运行的程序占用cpu比例-人为改动进程优先级的程序占用cpu比例-cpu空闲比例-等待状态进程占用cpu比例-硬件程序-软件程序-虚拟机程序
第四行:物理内存使用状况-总空间-空闲空间-已使用空间-缓存占用空间
第五行:交换分区使用情况-总空间-空闲空间-已使用空间-缓冲交换分区空间
-p:同时列出每个进程的PID。
-u:同时列出每个进程所属账号名称。
通过给予该进程一个信号signal去告诉该进程你想让它做什么
1:使进程重新加载配置文件
9:强制中断进程
15:正常结束一个进程
管理某个进程:kill -1 进程号 ; kill -9 进程号 ; kill -15 进程号;
结束某个服务:killall -9 htppd
PRI:此值越小越优先,不过这个PRI值是由核心动态调整的,用户无法直接调整PRI值。
NICE:取值范围 -20 到 19 ;当nice值为负时,系统就会降低进程的PRI值,优先级提高;
注意:
1、nice值范围 -20 ~ 19 。
2、root可随意调整自己或他人进程的nice值,且范围为 -20 ~ 19 。
3、一般用户仅能调整自己进程的nice值,且范围为 0 ~ 19 ;避免一般用户抢占资源;
4、一般使用者仅能将nice值调高,不能调低。
默认以kb为单位显示;-b 以byte为单位显示;-m 、-g同理。
-t:在输出的最终结果,显示物理内存与swap的总量。
-a:所有系统相关信息都列出来
-s:系统核心名称
-r:核心的版本
-m:本系统的硬件名称,例如i686、x86_64
-p:cpu类型
-i:硬件平台
-a:将目前系统中所有联机、socket数据都列出
-t:列出tcp包数据
-u:列出udp包数据
-n:不以进程的服务名称显示,以端口号显示。
-l:列出监听状态的服务
-p:列出网络服务的pid
查看启动的时候,硬盘相关信息
统计目前cpu状态,每秒一次,共三次。
进程procs项:r=等待运行中的进程数量 ;b=不可被唤醒的进程数量;这两项越多,代表系统越繁忙。
内存memory项:swpd=虚拟内存被使用量;free=未被使用的内存量;buff=用于缓冲存储器;cache=用于高速缓存。
内存交换空间swap项:si=从磁盘中将进程取出的量;so=由于内存不足将无用的进程写入到磁盘swap的容量;si或so数值太大,表示系统性能会变差。
磁盘读写io项:bi=由磁盘读取的区块数量;bo=写入到磁盘的区块数量;如果这部分数值高,代表系统I/O非常忙碌。
系统system项:in=每秒被中断的进程次数;cs=每秒钟进行的事件切换次数;这两个数值越大,代表系统与接口设备沟通非常频繁,比如磁盘、网卡等。
cpu项:us=非核心层的cpu使用状态;sy=核心层使用的cpu状态;id=闲置的状态;wa=等待I/O所耗费的cpu状态;st=虚拟机占用的cpu状态。
查看系统上所有磁盘的读写信息。
进行工作管理(job control)过程中,每个工作都是当前·shell的子进程,彼此相关,无法以工作管理的方式由tty1的环境管理tty2的bash。
进行工作触发的进程必须来自于你的shell的子进程(只管理自己的bash)。
前景:可以控制与下达指令的这个环境称为前景的工作(foreground)。
背景:可以自行运作的工作,你无法使用 ctrl + c 终止它,可以使用 bg/fb 呼叫该工作。
背景中执行的进程不能等待 terminal/shell 的输入。
打包压缩 /etc 文件夹,并将stdout或stderr信息保存至logetc.log中,通过 & 将此工作移至后台。
通过ctrl + z 移至后台的工作都是暂停状态。
例:当前在 vim logetc.log ,突然需要去执行另一条命令,可在vim一般模式下,按ctrl + z 将工作暂停并移至后台。
jobs [-lrs]
-l:显示除工作编号与进程外,同时列出PID。
-r:显示正在后台running的工作。
-s:显示正在后台stop的工作。
+:代表最近一次被移至后台的工作 -:代表倒数第二个被移至后台的工作
kill后面默认接的数字为PID,如果用kill管理bash的jobs,则需要格式 kill -9 %jobnumber。
fuser [-umv] [-k [i] [-signal]] file/dir
选项与参数
-u:列出进程PID、该进程的拥有者
-m:后面接的文件名会主动上提到该文件系统的最顶层,对umount失败很有效
-v:可以列出每个文件与进程还有命令的完整相关性
-k:找出使用该文件/目录的PID,并试图以sigkill这个信号给与该PID
-i:必须与-k配合,在删除PID前会先询问使用者意愿
-signal:例如1、9、15,不加的话,默认是sigkill(-9)
列出目前所在目录的使用PID/所属账号/权限