前言:
上一期为大家带来了进程的基础知识与ps命令的简单用法,这一期将会继续为大家带来更多的详细解释。
Linux进程是指正在运行的程序的实例。每个进程都有其自己的独立内存空间、指令指针、堆栈、文件描述符和其他相关资源。Linux进程的创建、调度和撤销都是由操作系统内核负责的。
进程在Linux操作系统中扮演着至关重要的角色。它们为用户提供了多任务处理能力,使得多个应用程序可以同时运行,并且可以访问各自的资源,同时也为系统提供了更好的资源利用率。进程还可以在系统崩溃或异常退出的情况下保护系统稳定性,因为它们之间是相互独立的。
“ps aux”是一条常见的Linux命令,用于显示所有进程的详细信息,包括所有用户的进程。它显示的是当前正在运行的所有进程的信息,而不仅仅是当前用户的进程。
具体而言,"ps aux"中的"a"选项表示显示所有用户的进程,"u"选项表示输出详细的进程信息,"x"选项表示显示无控制终端的进程。
因此,"ps aux"命令会列出所有正在运行的进程的详细信息,包括进程的PID、所属用户、CPU使用率、内存占用量、启动时间以及进程的命令行参数等。
USER:进程的所有者
进程的所有者是运行进程的用户ID,也可以是用户名或组名,也就是说,谁运行了该进程,则USER则是其的用户名,该进程也会继承此用户的相应权限。
PID:进程的唯一标识符(Process ID)
每个进程都有一个唯一的进程ID(PID)。PID是由内核分配给进程的整数值,用于在进程之间进行区分和识别。同样的程序可以产生多个进程,但PID则是唯一的,系统和人则可以通过PID对进程进行区分
%CPU:进程占用CPU的使用率
表示该进程占用CPU的时间与总CPU时间的比率。
%MEM:进程占用内存的使用率
表示进程使用的内存量与系统总内存量的比率。
VSZ:进程使用的虚拟内存大小(KB)
进程所需的虚拟内存大小的总和,包括共享库、代码、数据和堆栈等。进程在运行时并不清除自己需要多少内存,并进程的内存使用会产生变化,故进程在开始时,则会申请相应的虚拟内存,但实际一般内存占用不会达到这个数值,单位为kb。
RSS:进程占用的物理内存大小(KB)
表示进程使用的物理内存的大小,包括共享库和进程私有数据等,也就是进程实际占用了多少内存,单位为kb。
TTY:该进程所属的终端设备,如果没有则显示“?”
该进程是在哪一个终端设备上运行的,如果该进程没有与终端设备相关联,则显示"?"
在Linux系统中,tty代表终端设备。终端设备是一个提供用户与计算机进行交互的设备,如控制台、串口、终端仿真器等。tty是文本终端设备的通用名称,每个tty设备都有一个唯一的编号,例如tty1、tty2等。
当用户通过SSH等远程连接方式登录到系统时,会在系统上创建一个虚拟终端设备,这个设备通常被称为pts。pts的全称是pseudo-terminal slave,即伪终端从设备,它是由pty(pseudo-terminal)主设备打开时自动生成的,用户的登录会话就与pts设备相关联。每次远程登录都会生成一个新的pts设备,这些设备的名称通常以pts/开头,例如pts/0、pts/1等。
STAT:进程的状态
包括R(运行)、S(睡眠)、T(跟踪/停止)、Z(僵尸进程)等。一些常见的状态包括:
R(Running):进程正在运行,或者在运行队列中等待执行;
S(Sleeping):进程处于休眠状态,通常是因为正在等待某些事件的发生,例如I/O操作或信号;
D(Disk sleep):进程处于不可中断的休眠状态,通常是因为正在等待硬件设备的响应;
T(Stopped):进程已停止运行,通常是因为接收到了SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU信号;
Z(Zombie):进程已经终止,但是其父进程尚未调用wait()系统调用来获取该进程的退出状态信息;
X(Dead):进程已经终止,但是仍然在进程表中保留一段时间,以便父进程可以获取其退出状态信息;
<(High-priority):进程以高优先级运行;
N(Low-priority):进程以低优先级运行;
(Foreground):进程正在前台运行;
START:进程启动的时间
显示进程的启动时间。它显示了进程最初启动时的日期和时间。
TIME:进程已经占用CPU的时间
在 "ps" 命令的输出中,TIME列表示进程在CPU上运行的累计时间,以时分秒的格式显示。这个时间是指自进程启动以来,在CPU上所花费的总时间。具体来说,TIME列中的数值包括了进程执行用户态代码和内核态代码所花费的时间,它也包括了进程等待I/O操作完成所花费的时间。
在Linux系统中,TIME列中的数值是一个累计值,每当进程占用CPU时,其累计的时间值就会增加。因此,如果一个进程在一段时间内一直处于运行状态,则其TIME列中的数值就会增加。这个时间值可以帮助管理员了解进程的负载情况,以及对系统资源的使用情况进行分析。
需要注意的是,TIME列显示的时间并不是进程在系统中运行的实际时间,而是进程占用CPU的时间。如果一个进程在执行过程中被阻塞或者等待I/O操作完成,它在这段时间内并不会占用CPU,因此TIME列中的数值并不包括这些等待时间。
简单演示:
执行一个持续运行的进程;
持续监控该进程:状态为R+,TIME一直在持续增加;
停止该进程但不结束进程:状态为T,TIME暂停,不再增加;
让该进程继续运行:状态为R+,TIME继续增加;
COMMAND:进程所执行的命令和参数
显示进程正在执行的命令和它的参数。它是启动该进程的完整命令行。
在ps得到的信息中,我们可以充分了解到我们的系统有哪些进程,以及进程的相关信息。当然,肯定不是只有我们今天所讲解的这些,下一期,我们会为大家带来进程的实时优先级以及非实时优先级的相关概念及使用方法。