在管理进程之前,我们需要知道什么是进程。其实我们可以简单的把进程理解为程序在操作系统中运行的进程。进程的管理其实就是程序什么时候开始,整个生命周期需要多少资源,程序进程如何结束,是自己结束还是被其他程序结束。另外,当程序运行时,我们不希望它再运行。告诉程序你该结束了,需要进程间的通信,这也是进程管理。我们在管理进程的时候,需要知道进程的几个概念:进程查看进程控制命令进程通信方式-信号守护进程和系统日志服务管理工具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使用率、内存使用率和执行时间对任务进行排序;此命令的许多功能可以交互设置或在自定义文件中设置。
