Linux--进程管理和性能相关工具

进程状态

在这里插入图片描述

进程的基本状态

进程的基本状态
  1.创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),
            向其中填写控制和管理进程的信息,完成资源分配。
            如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态。
  
  2.就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行。
  
  3.执行状态:进程处于就绪状态被调度后,进程进入执行状态。
  
  4.阻塞状态:正在执行的进程由于某些事件(Io请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。
            在满足请求时进入就绪状态等待系统调用。
    
  5.终止状态:进程结束,或出现错误,或被系统终止,进入终止状态,无法再执行。

其他更多态

运行态: running
就绪态: ready
睡眠态: 分为两种,可中断: interruptable,不可中断: uninterruptable
停止态: stopped,暂停于内存,但不会被调度,除非手动启动
僵死态: zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死态的子进程
运行(Running或R)
1.运行(Running 或 R)
    状态描述: 进程正在CPU上执行或正在准备执行。只有一个进程可以真正处于正在执行状态,而其他准备执行的进程处于就绪状态。
    特点: 这种状态的进程占用CPU时间片。多任务操作系统通过快速切换这些进程,使得用户感觉到多个进程在同时运行。
可中断睡眠(Interruptible Sleep 或 S)
2.可中断睡眠(Interruptible Sleep 或 S)
    状态描述: 进程正在等待某个条件的满足,比如I/O操作的完成。当条件满足时,进程会被唤醒并进入就绪状态。
    特点: 这种状态下的进程可以响应信号(如终止信号),从而被唤醒。
不可中断睡眠(Uninterruptible Sleep 或 D)
3.不可中断睡眠(Uninterruptible Sleep 或 D)
    状态描述: 进程等待硬件条件的满足,如磁盘I/O操作的完成。这类进程不能被信号唤醒,必须等待操作完成。
    特点: 由于进程在等待硬件资源,所以处于这种状态的时间通常较短。如果有进程长期处于该状态,可能表明系统存在硬件或驱动问题。
停止(Stopped 或 T)
4.停止(Stopped 或 T)
    状态描述: 进程由于接收到SIGSTOP、SIGTSTP等信号而暂停执行。此状态通常由调试器(如GDB)或用户手动触发(如Ctrl+Z)。
    特点: 停止的进程不会占用CPU资源,但仍保留在内存中。可以通过SIGCONT信号恢复执行。
僵尸(Zombie 或 Z)
5.僵尸(Zombie 或 Z)
    状态描述: 进程已经终止,但其父进程尚未调用wait()等系统调用来回收其资源。僵尸进程保留在进程表中,直到父进程处理它。
    特点: 僵尸进程不占用任何系统资源(如CPU、内存),但占用进程表条目。大量僵尸进程可能会耗尽进程表条目,影响系统的正常运行。

范例:僵尸态

[root@rocky ~]# bash
[root@rocky ~]# echo $BASHPID
2440
[root@rocky ~]# echo $PPID
2360

#将父进程设为停止状态
[root@rocky ~]# kill -19 2360

#杀死子进程,使其进入僵尸态
[root@rocky ~]# kill -9 2440

ps aux后可以看到父进程stat为Ts,子进程stat为Z+
在这里插入图片描述
终止僵尸态

#方法1:恢复父进程
[root@rocky ~]# kill -18 2360

#方法2:杀死父进程
[root@rocky ~]# kill -18 2360

我选择了恢复父进程,再次使用ps aux观察时,就没有僵尸进程了
在这里插入图片描述

状态转换

运行―—>就绪:
   1,主要是进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的;
   2,在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为就绪状态;
            
就绪―—>运行: 运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU;

运行――>阻塞: 正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如发生了I/O请求;

阻塞——>就绪: 进程所等待的事件已经发生,就进入就绪队列;

以下两种状态是不可能发生的:
  阻塞―—>运行: 即使给阻塞进程分配CPU,也无法执行,操作系统在进行调度时不会从阻塞队列进行挑选,而是从就绪队列中选取;
  就绪——>阻塞: 就绪态根本就没有执行,谈不上进入阻塞态。

进程管理相关工具

Linux系统状态的查看及管理工具:
  pstree、 ps、 pidof、 pgrep、 top、 htop、 glance、 pmap、 vmstat、 dstat
  kill、 pkill、 job、 bg、 fg、 nohup

进程树pstree

man pstree

NAME
       pstree - display a tree of processes

SYNOPSIS
       pstree [-a, --arguments] [-c, --compact] [-h, --highlight-all, -Hpid, --highlight-pid pid] [-g] --show-pgids] [-l, --long] [-n, --numeric-sort]
       [-N, --ns-sortns [-p, --show-pids] [-s, --show-parents] [-S, --ns-changes] [-t, --thread-names] [-T, --hide-threads] [-u, --uid-changes]
       [-Z, --security-context] [-A, --ascii, -G, --vt100, -U, --unicode] [pid, user]
       pstree -V, --version

DESCRIPTION
       pstree  shows running processes as a tree. 
       The tree is rooted at either pid or init if pid is omitted.  
       If a user name is specified, all process trees rooted at processes owned by that user are shown.

pstree可以用来显示进程的父子关系,以树形结构显示。

格式:

pstree  [OPTION] [ PID | USER ]

常用选项:

-p  显示进程编号PID;
-T  不显示线程thread ,默认显示线程
-u  显示用户切换
-H  pid高亮显示指定进程及其前辈进程

在centos8上使用dnf安装pstree
在这里插入图片描述

pstree -p

-p     Show PIDs.  PIDs are shown as decimal numbers in parentheses after each process name.  -p implicitly disables compaction.

在这里插入图片描述

pstree -T

-T     Hide threads and only show processes.

在这里插入图片描述
在这里插入图片描述

-u     Show  uid  transitions.   
       Whenever  the uid of a process differs from the uid of its parent, the new uid is shown in parentheses after the process name.

在这里插入图片描述

 -h     Highlight  the  current process and its ancestors.  
        This is a no-op if the terminal doesn't support highlighting or if neither the current
        process nor any of its ancestors are in the subtree being shown.

 -H     Like -h, but highlight the specified process instead.  
        Unlike with -h, pstree fails when using -H if highlighting is not available.

在这里插入图片描述

进程信息ps

ps 即process state,可以显示进程当前状态的快照,默认显示当前终端中的进程,Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中。

常用选项

a 选项包括所有终端中的进程
× 选项包括不链接终端的进程
u 选项显示进程所有者的信息
f 选项显示进程树,相当于 --forest
k |--sort 属性 对属性排序,属性前加 –表示倒序
o 属性....选项显示定制的信息 pid、 cmd、 %cpu、 %mem

L显示支持的属性列表
-c cmdlist指定命令,多个命令用,分隔
-L 显示线程
-e 显示所有进程,相当于-A
-f 显示完整格式程序信息
-F 显示更完整格式的进程信息
-H 以进程层级格式显示进程相关信息
-u userlist指定有效的用户ID或名称
-u userlist指定真正的用户ID或名称
-g gid或groupname指定有效的gid或组名称
-G gid或groupname指定真正的gid或组名称
-p pid 显示指pid的进程
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值