Linux基础命令指南六(进程)

目录

进程定义与状态

1.定义与状态

2.查看进程状态

2.1  top命令

2.2  ps命令

管理进程

1.前后台进程

 2.信号管理进程


进程定义与状态

1.定义与状态

进程即处于内存中的可执行程序实例,在多任务操作系统中,每个CPU在一个时间上处理一个进程。当进程启动时,它会先进入到进程就绪队列(万事具备,只差CPU)中;等待CPU空闲之后由CPU处理,进入运行状态;运行时若遇到需要I/O事件,则进入阻塞状态,等待I/O事件完成后,回到就绪状态,等待CPU执行。

看完上边的话,你可能会疑惑如果一个进程的执行时间特别长,那么系统是否就无法处理其他任务了?

当然不是,CPU的运行也是受到限制的,最常见的是时间片轮转法,CPU一次最多只会处理当下进程一个时间片的时间, 时间用完则回到就绪状态(没有I/O事件),等待下一次启动。除此之外,CPU选取就绪队列中的进程也有多种策略,比如抢占式优先级(优先级高的进程可以抢占CPU资源)用于处理紧急的任务;选取等待时间最长的任务等等方法。

进程在Linux系统中一共具有如下状态:

Rrunning,处于运行中或者可运行状态
Ssleep,处于睡眠状态,但可以被唤醒
D不可唤醒的睡眠状态,一般在等待I/O操作完成,例如等待读取磁盘数据后的回复
K与D相同,唯一区别在于可以接受中止(彻底退出)的信号
ID状态的一个子集,可接受致命信号
T暂停状态,信号SIGSTOP,恢复使用信号SITCONT信号
T追踪停止状态,往往调试程序时出于此状态
Z僵尸状态,进程已经死亡,但是无法删除到内存外。例如子进程先于父进程结束后释放除PID之外的所有资源,但直到父进程结束前均处于此状态
X死亡状态,进程已经被完全释放

2.查看进程状态

2.1  top命令

top命令用于动态列出系统整体运行情况(每隔5秒刷新一次)。可用q退出。

top行信息为:登录日期,已登录时间,当前登录用户数,系统负载平均值

系统负载平均值:根据报告CPU上准备运行进程数与等待磁盘或网络I/O完成进程数确定。三个数分别为系统在1分钟,5分钟,15分钟内指数移动平均值。

系统负载平均值除以CPU数,得到的值小于1则表示资源使用率适当,反之表示资源饱和,处理存在延迟。

task行信息为:当前系统进程总数及处于各状态下进程数,运行,睡眠,停止,僵尸

%CPU信息行:CPU使用率

MiB Mem:物理内存总量,空闲区,已使用,缓冲区

MiB Swap:交换区总量,空闲,已使用,缓冲区

进程信息:

PID进程ID号
USER进程所有者用户
PR优先级
NInice值,值越低优先级越高
VIRT进程所使用的虚拟内存总量
RES进程使用的,未被换出的进程总量
SHR共享内存大小
S进程状态
%CPUCPU使用占比
%MEM进程使用的物理内存占比
TIME+CPU使用时间
COMMAND命令名/命令行

在top命令执行过程中,还有许多选项用于交互。

按键功能
?或者h帮助选项
l切换到负载标题行
t切换到线程标题行
m切换到内存标题行
shift+b运行中进程和标题转为粗体
k输入PID,以杀死进程
r调整nice值,输入PID,调整指定进程
shift+w保存调整,以便下一次top命令使用
q退出

2.2  ps命令

ps命令用于列出当前进程的详细信息,因为其可以接受不同类型的命令选项,不同类型的命令选项可以混用,但有时会发生冲突,有些同义选项功能也是相同的。

在这里我们只讲述最为常用的搭配:
 

ps aux                                         //显示包括无控制终端所有的进程详细信息

状态与top命令差不多,这里就不多叙述,只有TTY代表的是启用进程的终端,?代表不是由终端启动

ps lax                      //长列表显示进程信息

F为权限

ps -ef                    //与ps aux差不多

 PPID代表父进程ID,C代表进程所占用CPU百分比。 

 

ps --forest                    //树状显示进程关系

如图所示:bash为父进程, ps为其子进程。 

管理进程

1.前后台进程

命令一般都是在前台执行,但是如果你在命令后加上&符号,那么将会在后台执行,位于前台的任务可以使用ctrl+z将任务移至后台并暂停;

sleep 100 &

使用jobs可以查看当前会话的后台任务

而使用fg命令可将后台移回前台:

fg %number                //number为jobs的【】内数字

使用bg命令启动暂停的任务

bg %number

 

 2.信号管理进程

 可以使用命令kill -l查看当前系统所支持的信号集:

常用的信号作用
2终止进程,可被中止,ctrl+c
9强制杀死进程,致命
15(默认)终止进程,在进程执行完毕后,可被拦截
18启动暂停进程,不可拦截
19暂停进程,不可拦截
20暂停进程,可以被拦截,ctrl+z

kill 信号 PID/后台作业序号

可以使用pkill杀死一个用户的所有进程,使用pgrep确认要终止的进程 :

pgrep -l -u 用户名                           //显示用户持有进程PID与命令
pkill 信号 -u 用户名                         //删除用户所拥有进程

 -u可以换为-t,后跟终端名。

树状显示进程:

pstree -p 用户名

killall可以根据指定命令向此命令执行的所有进程 发送信号:

 

 

 

 

  • 25
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值