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 命令可以实时监测进程信息,这些命令和参数在实际业务中特别重要,能快速看到那些软件应用的运行状态,它们占用的资源大小信息,从而可以很好地对系统和软件优化。