Linux进程是操作系统中一个重要的概念,它指在Linux操作系统中运行的程序实例。进程是计算机中的基本执行单元,它包含了程序的代码、当前活动的状态、存储器内容、打开的文件和其他必要的信息。
Linux中进程的管理主要是通过内核来完成。内核负责调度(决定哪个进程获得CPU使用权)、创建和终止进程、管理进程间的通信等。
1. 进程的主要特征
独立性:每个进程都是独立运行的,彼此之间互不干扰。
资源占用:进程会占用系统资源,例如CPU时间、内存、文件描述符等。
程序计数器:进程有自己的程序计数器,用于指示程序的执行位置。
状态:进程可以处于不同的状态,如就绪、运行、阻塞等。
2. 查看进程
2.1 静态查看进程
ps aux
或
ps -ef
# a 显示所有用户的进程,而不仅仅是当前用户的进程(如果当前用户是超级用户)
# u 显示进程拥有者
# x 显示没有控制终端的进程
# e 显示系统中所有的进程
# f 全格式输出,显示更详细的信息,包括父进程的PID(PPID)、进程的启动时间等
上图输出中字段解释:
USER:进程所属用户
PID:进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ:进程占用的虚拟内存大小
RSS:占用的物理内存大小
TTY:终端类型
STAT:进程状态
START: 进程的启动时间
TIME:进程使用的CPU时间。
COMMAND:启动该进程的命令。
2.2 动态查看进程
top
top
命令是 Linux 中用于实时显示系统中进程和资源使用情况的一个监控工具。它可以帮助用户监控 CPU、内存、进程等各种资源的使用情况。
- 系统信息:在屏幕的顶部,是有关系统的摘要信息,包括当前时间、系统运行时间、用户登录数、平均负载等。
- 任务信息:包括当前运行的任务数量、运行状态(运行中、休眠等),以及占用的 CPU 和内存信息。
- 进程列表:下面的表格显示了当前运行的进程信息,包括 PID(进程ID)、用户(USER)、优先级(PR)、nice值(NI)、虚拟内存(VIRT)、常驻内存(RES)、共享内存(SHR)、CPU 使用率(%CPU)、内存使用率(%MEM)、运行时间(TIME+),以及命令名称(COMMAND)。
- 进程优先级nice,取值范围-20~19。
nice 值越高:表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低:表示优先级越高,例如-20,该进程更不倾向于让出CPU。
运行top命令常见的交互操作有:
M:按内存使用量排序进程
P:按 CPU 使用量排序进程
T:按运行时间排序进程
1:显示每个 CPU 的使用情况
q:退出 top
3. 结束进程
kill -1 PID 重新加载配置文件
kill -9 PID 强制杀死进程
kill -15(默认可不写)PID 终止进程
kill -18 PID 激活进程
kill -19 PID 挂起进程
pkill 后加程序名,可以批量杀死进程,但容易误删,谨慎使用
4. 查询PID
pgrep progress 取第一行
pidof progress 取最后一个
pgrep和pidof命令可以快捷查询进程PID,还可以ps -ef或ps aux后将结果管道交给grep处理。
ps aux | grep progress
ps -ef | grep progress
5. 进程管理的重要性
-
资源分配和管理:进程管理负责在系统中合理分配和调度CPU、内存和I/O等资源,确保系统各个进程都能获得所需的资源,从而提升系统的整体性能。
-
提高系统的并发性:通过有效的进程管理,Linux能够并行处理多个任务,实现多用户和多任务同时运行,提高资源利用率和响应时间。
-
进程隔离和安全性:进程管理能够确保各个进程相互隔离,防止进程之间的数据干扰和安全漏洞。这种隔离性是实现多用户环境和保证系统安全的重要机制。
-
调度算法的灵活性:Linux支持多种调度算法(如CFS、RT等),根据不同的应用需求,可以选择合适的调度策略,以实现公平性、实时性或响应性等不同目标。
-
故障恢复与稳定性:进程管理能够监控进程的状态,处理进程崩溃或挂起等异常情况,维护系统的稳定性和可用性。
-
进程通信:进程管理支持各种进程间通信机制(如管道、共享内存、消息队列),使得不同进程能够高效地交换数据和协作工作。
-
便利的进程控制:Linux提供了丰富的命令和系统调用(如
kill
、ps
、top
等)来控制和管理进程,帮助用户和管理员监控系统状态,优化性能。