Linux进程管理

进程

程序:放置在存储媒体中(硬盘,光盘,软盘等),为实体文件形式存在。

进程:运行中的程序。

服务:常驻内存的进程

父进程与子进程

Linux进程管理_第1张图片

系统先以fork 的方式复制一个与父进程相同的暂存进程,这个进程与父进程唯一-的差别就是PID不同,但是这个暂存进程还会多一个PPID的参数,就是父进程的进程标识符。然后暂存进程开始以exec 的方式加载实际要执行的程序,以上述图标来讲,新的程序名称为yyy,最终子进程的程序代码就会变成yyy。

进程状态

R:running,该程序正在运作中。

S:sleep,该程序正处于睡眠状态,但可以被唤醒。

D:不可被唤醒的睡眠状态,通常该程序可能在等待I/O的情况(ex>打印)

T:stop,停止状态

Z:zombie,僵尸状态,进程已经终止,但无法被移除至内存外。

X:死亡状态,进程彻底结束,可回收该进程相关资源;几乎在进程状态变为X的瞬间就会被清理掉,所以很难捕捉到该状态进程

<:高优先级

N:低优先级

s:表示此为父进程,它还有子进程

+:在前台进程组

显示系统所有的进程;ps aux

USER:用户名

PID:进程标识符

%CPU:占用cpu资源百分比

%MEM:占用内存资源百分比

VSZ:占用虚拟内存量(Kbytes)

RSS: 占用固定的内存量(Kbytes)

TTY:是在哪个终端上运行,与终端无关显示?

STAT:进程目前运行状态

START:被触发启动的时间

TIME:实际使用cpu的运作时间

COMMAND:该进程实际命令是什么

仅查看自己的bash相关进程:ps -l

Linux进程管理_第2张图片

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

命令: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按键。

Linux进程管理_第3张图片

第一行:当前时间-系统运行了多久-已登录系统人数-系统在1分钟5分钟15分钟的平均负载。

第二行:当前进程总数-running状态数量-sleep状态数量-stop状态数量-zombie状态数量

第三行:cpu使用状况-用户运行的程序占用cpu比例-系统运行的程序占用cpu比例-人为改动进程优先级的程序占用cpu比例-cpu空闲比例-等待状态进程占用cpu比例-硬件程序-软件程序-虚拟机程序

第四行:物理内存使用状况-总空间-空闲空间-已使用空间-缓存占用空间

第五行:交换分区使用情况-总空间-空闲空间-已使用空间-缓冲交换分区空间

以进程树的形式显示进程:pstree

-p:同时列出每个进程的PID。

-u:同时列出每个进程所属账号名称。

Linux进程管理_第4张图片

Linux进程管理_第5张图片

管理进程

通过给予该进程一个信号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值调高,不能调低。

新执行的命令给予新的nice值:nice

Linux进程管理_第6张图片

已存在进程调整nice值:renice

Linux进程管理_第7张图片查看系统状态

free:显示目前系统内存容量

默认以kb为单位显示;-b 以byte为单位显示;-m 、-g同理。

-t:在输出的最终结果,显示物理内存与swap的总量。

uname:查看系统与核心相关信息

-a:所有系统相关信息都列出来

-s:系统核心名称

-r:核心的版本

-m:本系统的硬件名称,例如i686、x86_64

-p:cpu类型

-i:硬件平台

Linux进程管理_第8张图片

uptime:查看系统启动时间与工作负载

netstat:追踪网络或插槽文件

-a:将目前系统中所有联机、socket数据都列出

-t:列出tcp包数据

-u:列出udp包数据

-n:不以进程的服务名称显示,以端口号显示。

-l:列出监听状态的服务

-p:列出网络服务的pid

Linux进程管理_第9张图片

dmesg:输出核心产生的信息

查看启动的时候,硬盘相关信息

Linux进程管理_第10张图片

vmstat:侦测系统资源变化

Linux进程管理_第11张图片

统计目前cpu状态,每秒一次,共三次。

Linux进程管理_第12张图片

进程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

通过ctrl + z 移至后台的工作都是暂停状态。

例:当前在 vim logetc.log ,突然需要去执行另一条命令,可在vim一般模式下,按ctrl + z 将工作暂停并移至后台

查看目前背景工作状态:jobs

jobs [-lrs]

-l:显示除工作编号与进程外,同时列出PID。

-r:显示正在后台running的工作。

-s:显示正在后台stop的工作。

+:代表最近一次被移至后台的工作     -:代表倒数第二个被移至后台的工作

将背景工作移至前景:fg

Linux进程管理_第13张图片

kill后面默认接的数字为PID,如果用kill管理bash的jobs,则需要格式 kill -9 %jobnumber。

列出使用某文件的进程:fuser

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/所属账号/权限

列出被进程开启的文件名:lsof

找出正在执行的某程序的PID:pidof

你可能感兴趣的:(Linux基础,linux,运维)