目录
一、程序和进程
1.程序
保存在硬盘、光盘等介质中的可执行代码和数据文件中
静态保存的代码
2.进程
在CPU及内存中运行的程序代码
动态执行的代码
父、子进程
每个程序可以创建一个或多个进程
3.线程与进程
进程是程序的一次执行,它是资源分配和管理的基本单位,包括代码、数据、堆栈、文件句柄等。
线程是进程中的一个执行流程,是CPU调度的基本单位,共享进程的资源,包括内存、文件和其他系统资源。
进程之间通常是相互独立的,每个进程有独立的内存空间,通过进程间通信(IPC)来实现数据共享和通信。
线程之间共享相同的地址空间和其他进程资源,线程之间的数据共享和通信更为方便。
二、查看系统进程
1.ps-静态查看系统进程
常用选项
a | 显示当前终端下的所有进程信息,包括其他用户的进程 |
u | 使用以用户为主的格式输出进程信息 |
x | 显示当前用户在所有终端下的进程信息 |
-e | 显示系统内的所有进程信息 |
-l | 使用长格式显示进程信息 |
-f | 使用完整的格式显示进程信息 |
-a | 显示现行终端下的所有进程 |
-T | 查看线程信息 |
–sort 属性 | 对属性排序,属性前加-表示倒序 |
ps aux-各列解释
USER | 进程的用户 |
PID | 进程的ID |
%CPU | 进程占用的CPU百分比,占用越高,进程越耗费资源 |
%MEM | 占用内存的百分比 |
VSZ | 该进程使用的虚拟内存量(KB) |
RSS | 该进程占用的实际物理内存量(KB) |
TTY | 启动进程的终端名。不是从终端启动的进程则显示为 ? |
STAT | 该进程的状态: D:不可中断的休眠状态; R:正在运行状态; S:处于休眠状态,可被唤醒; T:停止状态,可能是在后台暂停或进程处于跟踪调试状态; Z:僵尸进程,进程已经中止,但是部分程序还在内存当中 |
START | 该进程被启动时间 |
TIME | 该进程实际使用CPU的时间 |
COMMAND | 进程的名称与参数 |
[root@localhost ~]# ps -aT #显示所有线程
[root@localhost ~]# ps -T -p <pid> #查看指定进程中已经起的线程
[root@localhost ~]# ps -L <pid> #查看指定进程中的线程信息
[root@localhost ~]#ps aux --sort -%cpu | head -10 #按cpu降序排列,-为降序,+为升序,p与%同义
[root@localhost ~]#ps aux --sort +pmem | head -n 10 #按内存升序排列
[root@localhost ~]#ps aux --sort -pcpu,+pmem | head -n 10
各列解释
F | 内核分配给进程的系统标记 |
S | 进程的状态 |
UID | 启动这些进程的用户 |
PID | 进程的进程ID |
PPID | 父进程的进程号(如果该进程是由另一个进程启动的) |
C | 进程生命周期中的CPU利用率 |
PRI | 进程的优先级(越大的数字代表越低的优先级) | <