当前位置: 首页 > Linux

Linux进程管理(一)进程查看

时间:2023-04-07 01:44:25 Linux

在管理进程之前,我们需要知道什么是进程。其实我们可以简单的把进程理解为程序在操作系统中运行的进程。进程的管理其实就是程序什么时候开始,整个生命周期需要多少资源,程序进程如何结束,是自己结束还是被其他程序结束。另外,当程序运行时,我们不希望它再运行。告诉程序你该结束了,需要进程间的通信,这也是进程管理。我们在管理进程的时候,需要知道进程的几个概念:进程查看进程控制命令进程通信方式-信号守护进程和系统日志服务管理工具systemctlSELinux进程查看进程状态我们可以查看进程的状态进程通过三个命令查看ps、pstree、top。ps:p代表process,s代表state,其实就是processstate的缩写。一个进程有一个唯一编号,用来标识它的唯一名称,那么这个进程是随便启动的吗?答:不是。一个进程实际上是一个树状结构。我们可以使用pstree命令来查看一个进程的树状结构。top命令可以更全面的查看进程的运行状态。PS当我们执行ps命令时,我们可以查看当前终端可以查看到的进程状态。这里我们可以查看到两个进程,但是系统中真的只有两个进程吗?答:没有!PID就是我们之前提到的,一个进程在系统中的唯一标识,那么为什么会有唯一标识呢?因为我们linux系统中进程的名字是可以重复的,比如我们有多个用户登录系统,每个人都可以执行ps命令。这时候我们就需要通过PID来定位是谁执行了PS。TTY是我们当前执行ps的终端。当前执行的终端称为虚??拟终端,因此名称为pts/0。如果你使用的是纯字符界面,那么执行ps命令可以查看到的TTY应该是tty/0、tty/1、tty2。TIME表示进程运行的时间,但没有参考价值,不需要看这个选项。如果我们要查看其他进程,这里需要使用ps-e,可以看到进程输出比较多,这里可以看到有一个1号进程叫systemd,在CentOS6上是1号进程被称为初始化。可以通过manps查看ps的更多选项。其中,最常用的是ps-ef。我们可以看到里面多了一个UID,表示是哪个用户启动了这个进程。如果启动后不修改启动用户,则默认为启动用户。如果进程由root用户启动,换成其他用户,我们就可以做到。发起的用户身份不一定是它标识的用户身份。比如我们使用root用户启动一个Nginx程序,但是实际运行的用户是nobody,所以UID不叫启动用户ID,而是有效用户ID。这里显示的用户名是为了方便用户查看。PPID被称为父进程,我们所有的进程都必须从父进程继承一些信息。比如我们剩下两个,就必须继承父母的基因,Linux也是一样。添加f后,我们可以看到CMD也完成了,显示了命令的完整路径。如果我们想查看进程中开启的线程数,可以使用ps-eLf查看LWP的数量。有时,程序为了处理并发任务,需要开启多个线程进行处理。当计算机的计算资源不够用时,可以检查是不是进程太多或者线程太多导致系统变慢。当然,PS不限于这些参数。有机会我会在其他博文中解释其他参数。pstree通过pstree命令,我们不需要对ps命令显示的数据一一统计,也不需要查看2号进程的父进程是谁。在pstree中已经以树状结构显示。上面说了,当一个进程被创建的时候,它必须从父进程继承一些东西,然后进行个性化的初始化。toptop命令是Linux下常用的性能分析工具。它可以实时显示系统中各个进程的资源使用情况,类似于Windows的任务管理器。top显示系统的当前进程和其他状态。它是一个动态显示过程,即可以通过用户按键不断刷新当前状态。如果命令在前台执行,它将独占前台,直到用户终止程序。更准确地说,top命令提供了系统处理器的实时状态监控。它将显示系统中对CPU最“敏感”的任务列表。该命令可以按照CPU使用率、内存使用率和执行时间对任务进行排序;此命令的许多功能可以交互设置或在自定义文件中设置。

01:46:50代表当前系统时间up43days代表距离上次开机已经过去了多长时间。1user表示当前有一个用户登录loadaverage0.00,0.01,0.05平均负载用来衡量系统的繁忙程度。最后三个数字分别代表1分钟、5分钟、15分钟。如果busyness为1,则表示满载运行。关于系统的平均负载,有一个很形象的比喻。我们的系统可以比作单车道高速公路。如果我们的车在高速公路上满了,那么平均负载就是,如果是一条双车道的路,如果一条路满了,它的平均负载就是0.5。这里的平均负载是按照不同的时间采样的。抽样后一分钟做总结,中间5分钟,15分钟。在服务器上,我们经常看到递增递减。Tasks系统会尽可能多地考虑进程目前有116个进程在运行。%Cpu(s)代表我们的CPU使用率,us代表有多少CPU在执行用户计算,sy代表有多少CPU在参与进程间的状态交互,id代表有多少是空闲的,wa我们称之为IO等。当磁盘太慢时,CPU会花费大量时间等待IO磁盘操作。这里需要注意的是,Cpu(s)是指这里显示的是CPU使用率的平均值。如果我们要查看各个CPU的状态,需要在终端输入一个1才能查看各个CPU。用法。ni表示用户进程空间中优先级改变的进程占用的CPU百分比hi表示硬件CPU中断百分比si表示软件中断百分比st虚拟机百分比kiBmem表示我们的内存,total表示内存总量,free有多少内存未使用,used表示未使用多少内存,buff/cache表示使用多少内存读写缓存。KiBSwap,Swap在Linux中就是我们所说的交换分区,在Windows中就是虚拟内存。当实际物理内存不够用,想换出一些空闲内存时,就需要占用我们的Swap。下面是内存的实际信息。通过分析CPU和MEM,我们可以知道哪个进程处于忙碌状态,占用了多少CPU和MEM。默认情况下,它每3秒刷新一次。如果想加快刷新频率,可以按s键改变刷新时间。TIME+代表进程运行了多长时间。总结通过这三个命令,我们知道在Linux中,进程是按属性结构排列的,进程中有与之关联的用户称为有效用户身份,会以ID的形式显示,称为有效用户身份证在这里这意味着进程和用户权限是密不可分的。