当前位置: 首页 > 后端技术 > PHP

计算机操作系统基础(五)---Linux进程管理

时间:2023-03-29 14:20:06 PHP

简介本文是第五篇,Linux进程管理。本文主要介绍Linux进程的相关概念和操作Linux进程的相关命令。一、Linux进程相关概念1、进程的种类(1)前台进程前台进程是具有终端,可以与用户进行交互的进程。下面写了一个无限循环计算pi的程序,然后运行程序,虽然程序没有输入任何东西,但是却占满了整个终端shell。此时输入任何命令都没有用。这个进程是一个前台进程。现在改一下刚才的代码,让它不断的打印helloworld。这时候运行代码,会死循环输出helloworld,这是一个带输出的前台进程,这个带输出的前台进程的输出内容占据了整个终端shell,即使输入任何命令也不起作用,因为这个前台进程占用了终端shell(2)后台进程与前台进程相反。不占用终端的是后台进程。后台进程基本不与用户交互,其优先级低于前台进程(因为前台进程需要与用户交互,所以必须在响应速度上或者在其他地方需要跟上才能使与用户交互时更顺畅)我们通常使用&符号来结束后台进程,这样可以启动一个后台进程。例子:现在把之前的代码改一下,让它输出一个helloworld,让它作为后台进程运行,可以看到当我们作为后台进程运行的时候,它会输出一个进程ID,而这个后台进程并没有占用shell,虽然它的内容会打印到终端,但是我们还是可以正常使用命令的。同时,如果我们使用Ctrl+C,这个后台进程是不会停止的。(3)守护进程守护进程(daemon)是一种特殊的后台进程。许多守护进程在系统启动时启动并运行,直到系统关闭。Linux有很多典型的守护进程,比如crond。这就是Linux中的定时任务守护进程。httpd是Linux中http服务的守护进程,sshd是我们平时使用ssh登录时的守护进程,mysqld是数据库的守护进程(以d结尾的进程名一般是守护进程)2、进程的标记(1)进程ID进程的ID是进程唯一的标记。每个进程都有不同的ID。进程ID表示为一个非负整数。最大值受操作系统限制。我们可以使用top命令查看Linux中的所有进程。最左边的PID列是进程的ID。操作系统提供了fork()函数来创建进程,所以可能会出现如下情况。上半部分是进程的层次关系。这种层级关系称为父子进程关系。进程A通过fork函数创建了进程B,所以进程A是进程B的父进程。通过pstree命令可以查看进程的父子关系。ID为0的进程是空闲进程。它是系统创建的第一个ID为1的进程,它是init进程,是进程0的子进程。负责完成系统的初始化(init进程是所有用户进程的祖先进程)(2)进程状态标记在linux中,可以通过manps命令了解各种进程状态的标记,这里只介绍几个比较重要的简介现在把上面写的死循环计算pi的代码作为后台进程运行,并运行一段死循环休眠的代码作为后台进程,然后查看此时两个进程的状态标志,两个进程分别处于运行状态和休眠状态。二、操作Linux进程的相关命令ps命令(主要用来查看进程)top命令(主要用来查看Linux进程使用的内存或者其他一些状态)kill命令(主要用来查看进程)是用于向进程发送信号)1、ps命令(1)列出当前进程:ps(2)查看进程详情:ps-aux(3)查看指定用户进程:ps-uusername查看所有root用户进程:ps-uroot(4)查看指定进程:ps-aux|grep指定进程信息(5)查看进程树(查看进程的父子关系):ps-ef--forest(6)查看进程按照cpu使用频率排序:ps-aux--sort=pcpu(7)进程按照内存使用大小排序:ps-aux--sort=pmem2,top命令(1)查看状态所有进程的:top(PR是进程的优先级,VIRT是进程的虚拟内存,TIME+是进程的运行时间,COMMAND是进程的命令s)3、kill命令(1)向指定进程发送信号:kill-向指定进程ID9发送信号进程号这个信号:kill-9239这个信号表示进程无条件终止。更多信号可以使用kill-l进程查看。在瞬息万变的技术中寻找相同点,是一个技术人的核心竞争力。知行合一,理论与实践相结合站在巨人的肩膀上学习,向前辈致敬参考:https://coding.imooc.com/clas...