首页 > 系统相关 >linux进程和计划

linux进程和计划

时间:2024-04-17 18:24:47浏览次数:24  
标签:状态 程序 计划 线程 信号 linux 进程 CPU

程序

1.程序是一组计算机能识别和执行的指令,运行与电子计算机上,满足人们某种需求的信息化工具
2.用于描述进程要完成的功能,是控制进程执行的指令集

进程

运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位

  • 进程ID(Process ID,PID)号码被用来标记各个进程
  • UID、GID语境决定对文件系统的存取和访问权限
  • 通常从执行进程的用户来继承
  • 存在生命周期
  • 都由其父进程创建

进程创建:

  • init:第一个进程,从 CentOS7 以后为systemd

  • 进程:都由其父进程创建,fork(),父子关系,CoW:Copy On Write 写实更新,有数据写入子进程需要新的内存空间

程序在硬盘里,进程在内存里

  • 进程具有的特征:

  • 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;

  • 并发性:任何进程都可以同其他进程一起并发执行;

  • 独立性:进程是系统进行资源分配和调度的一个独立单位;

  • 结构性:进程由程序、数据和进程控制块三部分组成

进程与线程的区别
线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进
程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;
调度和切换:线程上下文切换比进程上下文切换要快得多。

如何确定一个程序 是多线程 还是 单线程?
pstree

grep -i threads /proc/进程的PID/status

prtstat 进程pid号

进程状态


进程的基本状态

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

进程更多的状态:

  • 运行态:running
  • 就绪态:ready
  • 睡眠态:分为两种,可中断:interruptable,不可中断:uninterruptable
  • 停止态:stopped,暂停于内存,但不会被调度,除非手动启动
  • 僵尸态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死态 的子进程

解决僵尸态问题
方法1:恢复父进程
[root@centos8 ~]#kill -18 1436
方法2:杀死父进程
[root@centos8 ~]#kill -9 1436

进程的优先级 os

进程优先级调整

  • 静态优先级:100-139
  • 进程默认启动时的nice值为0,优先级为120
  • 只有根用户才能降低nice值(提高优先性
    例:

操作系统分类:

  • 协作式多任务:早期 windows 系统使用,即一个任务得到了 CPU 时间,除非它自己放弃使用CPU ,否则将完全霸占 CPU ,所以任务之间需要协作——使用一段时间的 CPU ,主动放弃使用
  • 抢占式多任务:Linux内核,CPU的总控制权在操作系统手中,操作系统会轮流询问每一个任务是否需要使用 CPU ,需要使用的话就让它用,不过在一定时间后,操作系统会剥夺当前任务的 CPU 使用权,把它排在询问队列的最后,再去询问下一个任务

进程类型:

  • 守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
  • 前台进程:跟终端相关,通过终端启动的进程

注意:两者可相互转化

按进程资源使用的分类:

  • CPU-Bound:CPU 密集型,非交互
  • IO-Bound:IO 密集型,交互

进程管理相关命令

进程的管理主要是指进程的关闭与重启。我们一般关闭或重启软件,都是关闭或重启它的程序,而不是直接操作进程的。比如,要重启 apache 服务,一般使用命令"service httpd restart"重启 apache的程序。systemctl httpd start

那么,可以通过直接管理进程来关闭或重启 apache 吗?答案是肯定的,这时就要依赖进程的信号(Signal)了。我们需要给予该进程 信号,告诉进程我们想要让它做什么。

系统中可以识别的信号较多,我们可以使用命令"kill -l"或"man 7 signal"来查询

号代号 信号名称 说 明
1 SIGHUP 该信号让进程立即关闭.然后重新读取配置文件之后重启
2 SIGINT 程序中止信号,用于中止前台进程。相当于输出 Ctrl+C 快捷键
3 SIGQUIT 退出
8 SIGFPE 在发生致命的算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为 0 等其他所有的算术运算错误
9 SIGKILL 用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。般用于强制中止进程
14 SIGALRM 时钟定时信号,计算的是实际的时间或时钟时间。alarm 函数使用该信号
15 SIGTERM 正常结束进程的信号,kill 命令的默认信号。如果进程已经发生了问题,那么这 个信号是无法正常中止进程的,这时我们才会尝试 SIGKILL 信号,也就是信号 9
18 SIGCONT 该信号可以让暂停的进程恢复执行。本信号不能被阻断
19 SIGSTOP 该信号可以暂停前台进程,相当于输入 Ctrl+Z 快捷键。本信号不能被阻断

ps命令
ps即process state,可以查看进程当前状态的快照,默认显示当前终端中的进程,Linux系统各进程的相关信息均保存在/proc数字目录/status下的文件中
支持三种选项:
UNIX选项如:-A -e
GNU选项如:--help
BSD选项如:a
查看静态的进程统计信息
“ps aux”可以查看系统中所有的进程
“ps -le”可以查看系统中所有的进程,而且还能看到进程的父进程的PID和进程优先级
“ps -l”只能看到当前Shell产生的进程
例:


常用选项

  • a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有的进程信息。
  • u:使用以用户为主的格式输出进程信息。
  • x:显示当前用户在所有终端下的进程信息。
  • -e:显示系统内的所有进程信息。
  • -l:使用长(Long)格式显示进程信息。
  • -f:使用完整的(Full)格式显示进程信
  • k|--sort 属性 对属性排序,属性前加 - 表示倒序 ps aux k -%cpu
  • o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem

标签:状态,程序,计划,线程,信号,linux,进程,CPU
From: https://www.cnblogs.com/leikj/p/18141436

相关文章

  • Linux之根分区扩容
    前言Linux根分区扩容是运维中必不可少的操作,扩容之前需要清楚系统的根分区是逻辑卷还是一块磁盘,根据不同的情况进行不同的扩容操作。相关概念MBR和GPTMBR(MasterBootRecord)(主引导记录)和GPT(GUIDPartitionTable)(GUID意为全局唯一标识符)是在磁盘上存储分区信息的两种不同方......
  • Linux与Shell 第2天 实操、软件包管理、Shell编程
    传送门Linux与Shell第0天阿里云安装Ubuntu22.04以及桌面Linux与Shell第1天文件目录、VIM、网络配置、系统管理、远程登录Linux与Shell第2天实操、软件包管理、Shell编程实操菜鸟教程Linux命令大全文件目录输入作用ls-a显示隐藏文件ls-lh详细信息......
  • Linux iowait详解
    1、概述Linux中,%iowait过高可能是个问题,严重的时候,它能使服务停止,但问题是,多高才算高?什么时候应该担心呢?本文将讨论iowait的含义、相关的统计数据、原理以及iowait的瓶颈问题。2、什么是iowaitLinux中的解释:ShowthepercentageoftimethattheCPUorCPUswere......
  • linux puppeteer 截图提示缺少chrome-linux/chrome error while loading shared libra
    puppeteer/.local-chromium/linux-1002410/chrome-linux/chrome:errorwhileloadingsharedlibraries:libXdamage.so.1:cannotopensharedobjectfile:Nosuchfileordirectory按照错误对照进行安装执行,缺啥安啥......
  • linux目录结构
    /为根目录,根目录下有:bin、dev、home、lib64、media、opt、root、sbin、sys、usrboot、etc、lib、lost+found、mnt、proc、run、srv、tmp、var等目录/bin[常用](usr/bin、/usr/local/bin)是Binary的缩写,存放着最经常使用的命令/sbin[常用]s就是SuperUser的意思,存放......
  • Linux centos安装tesseract-ocr教程
    安装依赖依赖的包:autoconfautomakelibtoollibjpeg-devellibpng-devellibtiff-develzlib-develleptonica(1.67以上)(一下环境依赖,有则更新,无则安装)yuminstallautoconfautomakelibtoolyuminstalllibjpeg-devellibpng-devellibtiff-develzlib-develLeptonica库......
  • linux命令
    #磁盘测试ddbs=8kcount=4kif=/dev/vda1of=test.logconv=fdatasyncbs:每次读取或写入的大小,即一块的大小count:读写块的总数量4K次避免操作系统“写缓存”干扰测试成绩,使用sync、fsync、fdatasyncconv=fdatasync表示只把文件的“数据”写入磁盘conv=fsync表示把文件的“数......
  • 在Linux中,如何使用Wireshark进行网络协议分析?
    Wireshark是一个网络协议分析器,它能够实时捕获和分析网络流量,提供对网络协议的深入理解。Wireshark支持多种协议,并提供了强大的过滤和搜索功能,使得分析网络问题和学习网络协议变得更加容易。1.安装Wireshark在大多数Linux发行版中,你可以通过包管理器安装Wireshark:sudoapt-get......
  • Linux ab详解
    前言ab是apachebench命令的缩写,ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。......
  • 在Linux中,如何使用tcpdump和tshark进行实时数据包捕获?
    tcpdump和tshark是两个常用的网络分析工具,它们可以捕获网络接口上的数据包,并提供实时的网络流量分析。tcpdump是一个命令行工具,而tshark是Wireshark的命令行版本,提供了更多的功能和更详细的输出。1.使用tcpdump进行实时数据包捕获安装tcpdump:在大多数Linux发行版中,tcpdump已......