Linux 查看进程
前面小节对文件和目录的创建、删除、移动、重命名、查看、修改等操作做了介绍,本小节开始学习 Linux 进程相关的知识点,学习如何查看 Linux 中的进程信息,并介绍通过命令展示出来的进程信息。
1. 进程概念简介
进程(Process)是系统中进行资源的分配和调度的基本单位,是系统中的软件程序对某些数据集合的运行活动,是操作系统结构的基础。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。其定义如下:
2. 启动一个进程
这里以启动一个 nginx
服务为例,首先使用 yum
命令安装 nginx
软件,命令如下:
如上图所示,已经安装好了 nginx
之后,可以使用如下命令启动 nginx
服务:
启动 nginx
之后可以使用本机浏览器访问,但在访问之前需要先将 Linux 防火墙关闭,命令如下:
systemctl stop firewalld
systemctl status firewalld
关闭防火墙之后,就可以通过浏览器查看到 nginx 软件服务展示的内容:
3. 查看进程
在启动一个软件进程之后,可以使用 ps
命令查看启动软件的进程,命令如下:
Tips:ps -aux | grep nginx
中的 ps
表示查看进程,aux
是进程跟的参数,|grep nginx
表示使用管道查看 nginx
的进程。
4. ps 命令参数介绍
- 运行:正在运行或在运行队列中等待;
- 中断:休眠中,受阻,在等待某个条件的形成或接受到信号;
- 不可中断:收到信号不唤醒和不可运行, 进程必须等待直到有中断发生;
- 僵死:进程已终止, 但进程描述符存在, 直到父进程调用 wait4() 系统调用后释放;
- 停止:进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU 信号后停止运行运行。
ps
命令可以用来查看进程相关信息,下面列举一些 ps
命令的参数:
ps 命令参数名称 |
功能与作用描述 |
-a |
显示现行终端机下的所有程序,包括其他用户的程序。 |
-A |
显示所有程序。 |
-c |
列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 |
-e |
此参数的效果和指定 A 参数相同。 例如: ps -e |
e |
列出程序时,显示每个程序所使用的环境变量。 |
f |
用ASCII字符显示树状结构,表达程序间的相互关系。 |
-H |
显示树状结构,表示程序间的相互关系。 |
-N |
显示所有的程序,除了执行ps指令终端机下的程序之外。 |
-s |
采用程序信号的格式显示程序状况。 |
-S |
列出程序时,包括已中断的子程序资料。 |
-u |
以用户为主的格式来显示程序状况。 |
-x |
显示所有程序,不以终端机来区分。 |
Tips:使用上述一个或者多个参数可以查看到指定的进程信息。
5. 实时监测进程
上面介绍的 ps
命令只能查看输入命令那一刻获取到的进程信息,而 top
命令可以实时监测进程信息:
如上图所示展示的是实时进程监测信息,下面对这些信息进程说明:
- PID:进程号或进程ID;
- USER:进程属主的名字;
- PR:进程的优先级;
- NI:进程的谦让度值;
- VIRT:进程占用的虚拟内存总量;
- RES:进程占用的物理内存总量;
- SHR:进程和其他进程共享的内存总量;
- S:进程的状态,
D
表示可中断的休眠状态,R
表示运行状态,S
表示休眠状态,T
表示跟踪状态或停止状态,Z
表示僵化状态;
- %CPU:进程使用的 CPU 时间比例;
- %MEM:进程使用的内存占可用内存的比例;
- TIME+:自进程启动到目前为止 CPU 时间总数;
- COMMAND:进程所对应的命令行名称,也就是程序启动时的程序名。
Tips:top
命令展示出来的信息默认是按照 %CPU
的值从大到小排序的。
6. 小结
本小节介绍了,如何启动一个 nginx
程序进程,然后使用 ps -aux | grep nginx
命令查看 nginx
相关的进程信息,ps
和 top
命令都能查看进程信息,ps
查看的是输入命令之后那一刻的进程信息,而 top
命令可以实时监测进程信息,这些命令和参数在实际业务中特别重要,能快速看到那些软件应用的运行状态,它们占用的资源大小信息,从而可以很好地对系统和软件优化。