Linux —— 进程状态

目录

一,进程状态分类

二,僵尸进程

三,孤儿进程


一,进程状态分类

        进程状态反应进程执行过程中的变化,状态会随外界条件的变化而转换;

  • 三态模型,运行态、就绪态、阻塞态;
  • 五态模型,新建态、终止态、运行态、就绪态、阻塞态;

查看内核路径:..\linux-6.4.3\fs\proc\array.c

  • R(running),运行状态;
    • 进程不一定在运行中,可在运行中或在运行队列;
  • S(sleeping,也可称中断睡眠interruptible sleep),睡眠状态(浅度睡眠);
    • 进程在等待事件完成;可被再次唤醒;
    • 是一种等待状态;
  • D(disk sleep,也可称不可中断睡眠uninterruptible sleep),磁盘休眠状态(深度睡眠);
    • 通常会等待I/O的结束;且不可被杀死,即使是操作系统;
    • 是一种等待状态;
  • T(stopped),停止状态;
    • 可发送SIGSTOP信号停止进程,也在可发送SIGCONT恢复进程继续运行;
  • X(dead),死亡状态
    • 只是返回状态,不会在任务列表中看到;
//查看进程状态命令
ps aux / ps axj
[wz@192 ~]$ ps axj | head -1 && ps axj | grep bash$PPID    PID   PGID    SID TTY       TPGID STAT   UID   TIME COMMAND2906   2922   2922   2922 pts/0      2922 Ss+   1000   0:00 bash2906   2980   2980   2980 pts/1      3253 Ss    1000   0:00 bash

//运行状态PPID    PID   PGID    SID TTY       TPGID STAT   UID   TIME COMMAND8090   8096   8090   2922 pts/0      8090 R+    1000   0:04 ./target
//浅度睡眠 S+前台运行PPID    PID   PGID    SID TTY       TPGID STAT   UID   TIME COMMAND8090   8096   8090   2922 pts/0      8090 S+    1000   0:02 ./target
//浅度睡眠 S后台运行(可命令后加&,使用kill退出)PPID    PID   PGID    SID TTY       TPGID STAT   UID   TIME COMMAND2922   8902   8902   2922 pts/0      2922 S     1000   0:02 ./target
[wz@192 Desktop]$ kill -l1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	
//暂停进程操作,19是暂停信号标签,13482进程PID
[wz@192 ~]$ kill -19 13482 
//暂停后会出现以下提示
[1]+  Stopped                 ./target
//唤醒进程操作,18是暂停信号标签,13482进程PID
[wz@192 ~]$ kill -19 13482 
//停止状态PPID    PID   PGID    SID TTY       TPGID STAT   UID   TIME COMMAND2922  13482  13482   2922 pts/0      2922 T     1000   0:14 ./target

 

二,僵尸进程

        僵尸状态(zombie)是一个比较特殊的状态;进程已结束,但其父进程并没有及时回收其资源(如调用wait或waitpid等函数),形成“僵尸”状态;即当进程退出而父进程没有读取子进程退出的返回代码;

  • 僵死进程会以终止状态保持在进程列表中,且会一直在等待父进程读取退出状态代码;
  • 子进程退出,父进程还在运行,但父进程未读取子进程的状态,即子进程进入Z状态;
  • 进程退出状态会一直维持下去,一直处于Z状态;
  • 维护退出状态本身需数据维护(属进程基本信息,保存在task_struct);
#include <stdio.h>
#include <stdlib.h>int main()
{pid_t id = fork();if(id < 0){perror("fork");return 1;}else if(id > 0)    {    printf("farther[%d] is sleeping...\n", getpid());    sleep(30);    }    else    {    printf("child[%d] is begin Z...\n", getpid());    sleep(5);    exit(EXIT_SUCCESS);                                                           }    return 0;    
}  
//运行并监视
[wz@192 ~]$ while :; do ps aux | grep target | grep -Ev 'grep|pulseaudio'; sleep 1; echo
"###########"; done 
###########
wz         5766  0.0  0.0   4216   352 pts/0    S+   19:04   0:00 ./target
wz         5767  0.0  0.0      0     0 pts/0    Z+   19:04   0:00 [target] <defunct>

僵尸进程危害

  • 占用系统资源,会造成内存资源浪费,内存泄露;
  • 影响系统性能;
  • 安全漏洞;

避免僵尸

  • 及时回收;
  • 避免长时间运行;
  • 注册信号处理函数;

三,孤儿进程

  • 父进程提前退出,其子进程就会成为“孤儿进程”;
  • 孤儿进程会被1号init进程领养,由init进程回收;
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>int main()
{pid_t id = fork();if(id < 0){perror("fork");return 1;}else if(id == 0){printf("I am child, pid : %d\n", getpid());sleep(10);}else{printf("I am parent, pid: %d\n", getpid());sleep(3);exit(0);}return 0;
}
//运行并监视
[wz@192 ~]$ while :; do ps axj | head -1 && ps axj | grep target | grep -Ev 'grep|pulseaudio'; sleep 1; echo "###########"; done 
###########PPID    PID   PGID    SID TTY       TPGID STAT   UID   TIME COMMAND2922   6740   6740   2922 pts/0      6740 S+    1000   0:00 ./target6740   6741   6740   2922 pts/0      6740 S+    1000   0:00 ./target
###########PPID    PID   PGID    SID TTY       TPGID STAT   UID   TIME COMMAND1   6741   6740   2922 pts/0      2922 S     1000   0:00 ./target

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud微服务(三)RabbitMQ、SpringAMQP、elasticsearch、DSL、MQ、ES详细介绍

目录 一、初始MQ 同步调用 异步调用 什么是MQ 执行下面的命令来运行MQ容器&#xff1a; 如果冲突了&#xff0c;可以先查询 RabbitMQ概述 常见消息模型 HelloWorld案例 二、SpringAMQP 引入依赖 Work Queue 消费预取限制 ​编辑 发布、订阅 发布订阅Fanout Ex…

PCL 基于三个点计算圆心坐标(二维)

文章目录 一、简介二、实现代码三、实现效果一、简介 思路很简单,假设给定三角形三个点 P , Q , R P,Q,R P,Q,

每日一道面试题之ArrayList 和 LinkedList 的区别是什么?

ArrayList和LinkedList是Java中常用的两种集合类&#xff0c;它们在实现和使用上有一些区别&#xff0c;如下所示&#xff1a; 内部实现&#xff1a;ArrayList是基于数组实现的动态数组&#xff0c;而LinkedList是基于双向链表实现的。 插入和删除操作&#xff1a;ArrayList在…

进阶C语言——字符串和内存函数

今天我们学点库函数 字符函数和字符串函数 求字符串长度函数->strlen strlen需要的头文件是string.h ,那它的作用是什么呢&#xff1f;&#xff1f; 他是来求字符串长度的&#xff0c;统计的是’\0’前的字符串长度 #include<stdio.h> #include<string.h> int …

紫光展锐CEO任奇伟博士:用芯赋能,共建XR新生态

7月6日&#xff0c;2023世界人工智能大会在上海世博中心及世博展览馆盛大开幕。紫光集团高级副总裁、紫光展锐CEO任奇伟博士受邀出席芯片主题论坛&#xff0c;并发表题为《用芯赋能&#xff0c;共建XR新生态》的演讲。 世界人工智能大会自2018年创办以来已成功举办五届&#xf…

1.4 MVP矩阵

MVP矩阵代表什么 MVP矩阵分别是模型&#xff08;Model&#xff09;、观察&#xff08;View&#xff09;、投影&#xff08;Projection&#xff09;三个矩阵。 我们的顶点坐标起始于局部空间&#xff08;Local Space&#xff09;&#xff0c;在这里他成为局部坐标&#xff08;L…

报错:dependencies.dependency.version‘ for com.alibaba:druid:jar is missing

我在pom.xml中是这样写的&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.6</version> </dependency>然后就报错&#xff1a;dependencies.dependency.version for c…

面试题更新之-DOCTYPE html相关问题

文章目录 <!DOCTYPE html>是什么&#xff1f;为什么要在html文件开头加上一个<!DOCTYPE html>DOCTYPE的作用&#xff0c;严格与混杂模式的区别&#xff0c;有何意义HTML5为什么只需要写<!DOCTYPE HTML> 是什么&#xff1f; 是HTML文档的文档类型声明&#xf…

如何拉取GitHub上的不同分支

要拉取GitHub上的不同分支&#xff0c;你可以按照以下步骤进行操作&#xff1a; ①首先&#xff0c;在GitHub上找到你要拉取分支的仓库页面。 ②在仓库页面顶部&#xff0c;你将看到一个下拉菜单&#xff0c;显示当前选择的分支。点击这个下拉菜单&#xff0c;在列表中选择你…

Redis进阶

Redis之父安特雷兹 redis x.x.x第二位是偶数的是稳定版本 redis7安装单机物理机安装&#xff1a; https://blog.csdn.net/G189D/article/details/129185947 数据类型 bitmap 统计二值状态的数据类型 最大位数2^32位&#xff0c;他可以极大的节约存储空间&#xff0c;使用…

postman 自动化测试

postman 自动化测试 0、写在前面1、变量引用1.1、如何在请求体中引用变量 0、写在前面 在有些时候看官方文档 比网上搜索效率要高&#xff0c; 比如网上搜一通还是不知道用法或者没有搜索到你想要的用法的时候。 postman官方文档 : https://learning.postman.com/docs/introdu…

layui选项卡演示

layui选项卡演示 .1 引入layui2. 选项卡演示实列3.js分离的代码4运行结果 在前端开发中&#xff0c;选项卡常用于展示多个内容模块&#xff0c;提供用户友好的界面交互方式。layui作为一款简洁易用的前端框架&#xff0c;提供了丰富的组件库&#xff0c;其中包括了强大且易用的…

J2EEXML建模

目录 用一个xml-config文件实例&#xff1a; 先看config.xml文件 再看 ActionModel ConfigModel ActionNotFoundException ForwardNotFoundException ConfigModelFactory ActionDuplicateDefinitionException ForwardDuplicateDefinitionException InvalidPathExcept…

《MySQL》事务

文章目录 概念事务的操作属性&#xff08;aicd&#xff09; 概念 一组DML语句&#xff0c;这组语句要一次性执行完毕&#xff0c;是一个整体 为什么要有事务&#xff1f; 为应用层提供便捷服务 事务的操作 有一stu表 # 查看事务提交方式(默认是开启的) show variables like au…

【PAT】1022.D进制的A+B

【PAT】1022.D进制的AB 输入两个非负 10 进制整数 A 和 B ( ≤ 2 ​ 30 2​^{30} 2​30​ −1)&#xff0c;输出 AB 的 D (1<D≤10)进制数。 输入格式&#xff1a; 输入在一行中依次给出 3 个整数 A、B 和 D。 输出格式&#xff1a; 输出 AB 的 D 进制数。 输入样例&am…

pytorch深度学习逻辑回归 logistic regression

# logistic regression 二分类 # 导入pytorch 和 torchvision import numpy as np import torch import torchvision from torch.autograd import Variable import torch.nn as nn import torch.nn.functional as F import torch.optim as optim import matplotlib.pyplot as …

Kafka第二课-代码实战、参数配置详解、设计原理详解

一、代码实战 一、普通java程序实战 引入依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.4.1</version></dependency><dependency>&l…

docker 部署网页相关服务

docker 部署网页相关服务 // 安装SFTP 1.拉取镜像 docker pull netresearch/sftp 2.启动后容器&#xff1a; docker run --name Sftp -v E:\wwwroot\julong\fsnfiles:/home/sftpuser/upload --privilegedtrue -p 22:22 -d netresearch/sftp sftpuser:123456:::upload //安装ftp…

Ceph的安装部署

文章目录 一、存储基础1.1 单机存储设备1.2 单机存储的问题1.3分布式存储&#xff08;软件定义的存储 SDS&#xff09; 二、Ceph 简介2.1 Ceph 优势2.2 Ceph 架构2.3 Ceph 核心组件2.4 Pool、PG 和 OSD 的关系&#xff1a;2.5 OSD 存储后端2.6 Ceph 数据的存储过程2.7 Ceph 版本…

面向初学者的卷积神经网络

卷积神经网络在机器学习中非常重要。如果你想做计算机视觉或图像识别任务&#xff0c;你根本离不开它们。但是很难理解它们是如何工作的。 在这篇文章中&#xff0c;我们将讨论卷积神经网络背后的机制、它的优点和应用领域。 什么是神经网络&#xff1f; 首先&#xff0c;让…