进程管理工具top ps
概述
top
和ps
是 Linux 系统中两个非常重要的用于管理和监控进程的命令工具。以下是它们的主要功能和区别:
top:
动态视图:top 提供了一个实时动态更新的视图,能够持续显示系统中当前正在运行的进程信息及其资源占用情况。
系统性能监控:除了显示进程信息外,top 还可以显示系统的整体性能指标,如平均负载(uptime,load average)、CPU使用率(%CPU)、内存使用量(%MEM)等。
更新频率:默认情况下,top命令会定期(通常是3秒钟)刷新输出,更新进程列表和系统状态。 top -d 2
ps:
静态视图:ps 命令在执行瞬间提供一个进程状态的快照,它不会像 top 那样持续刷新,一次性输出指定时刻的进程信息。
详细信息:ps 可以列出大量的进程详细信息,包括进程ID(PID)、父进程ID(PPID)、进程状态、CPU利用率、内存占用、启动时间和命令行等。
定制化输出:
ps
支持多种参数组合,可以灵活定制输出格式和选择要显示的进程,例如通过-ef
参数查看全部进程的详细信息,或者通过-aux
查看系统中所有用户的进程等。
top命令
top命令的输出如下
命令字段详解
- 第一行:系统运行时间和平均负载
当前时间、系统已运行时间、当前登录用户的数量、最近5、10、15分钟内的平均负载
- 第二行:任务
任务的总数、运行中(running)的任务、休眠(sleeping)中的任务、停止(stopped)的任务、僵尸状态(zombie)的任务
- 第三行:cpu状态
字段 | 字段释义 |
us | user: 运行(未调整优先级的) 用户进程的CPU时间 |
sy | system: 运行内核进程的CPU时间 |
ni | niced:运行已调整优先级的用户进程的CPU时间 |
id | idle:空闲时间 |
wa | IO wait: 用于等待IO完成的CPU时间 |
hi | 处理硬件中断的CPU时间 |
si | 处理软件中断的CPU时间 |
st | 这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的) |
- 第四行:内存
全部可用内存、已使用内存、空闲内存、缓冲内存
- 第五行:swap
全部、已使用、空闲和缓冲交换空间
- 第七行至N行:各进程任务的的状态监控
字段 | 释义 |
PID | 进程ID,进程的唯一标识符 |
USER | 进程所有者的实际用户名 |
PR | 进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。 |
NI | 进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级 |
VIRT | virtual memory usage 虚拟内存,进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 |
RES | resident memory usage 常驻内存,驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA 1、进程当前使用的内存大小,但不包括swap out |
SHR | SHR:shared memory 共享内存 1、除了自身进程的共享内存,也包括其他进程的共享内存 |
S | 这个是进程的状态。它有以下不同的值:
|
%CPU | 自从上一次更新时到现在任务所使用的CPU时间百分比。%CPU显示的是进程占用一个核的百分比,而不是整个cpu(N核)的百分比,有时候可能大于100,那是因为该进程启用了多线程占用了多个核心,所以有时候我们看该值得时候会超过100%,但不会超过总核数*100 |
%MEM | 进程使用的可用物理内存百分比 |
TIME+ | 任务启动后到现在所使用的全部CPU时间,精确到百分之一秒 |
COMMAND | 运行进程所使用的命令。进程名称(命令名/命令行) |
进程查看ps
ps 命令是一个核心的进程查看命令,用于报告当前系统中进程的状态,常常与grep连用筛选
常见的扩展选项
- aux
a:显示一个终端所有的进程
u:显示进程的归属用户及内存使用情况
x:显示没有关联控制终端的进程 - axjf
j:显示进程归属的进程组id、会话id、父进程id
f:以ascii的形式显示出进程的层次关系
jps-扩展
jps 是 Java Virtual Machine Process Status Tool 的缩写,它用于显示当前正在运行的 Java 进程的信息,包括进程 ID 和进程的类名或 JAR 文件名。
以下是 jps 命令的一些常见用法:
1. jps :显示当前正在运行的 Java 进程的进程 ID 和类名或 JAR 文件名。
进入到jdk的bin路径下
.jps
2. jps -l :显示当前正在运行的 Java 进程的进程 ID 和完整的主类名(包括包路径)或 JAR 文件路径。
3. jps -m :显示当前正在运行的 Java 进程的进程 ID、主类名或 JAR 文件名,以及传递给主类的参数。
4. jps -v :显示当前正在运行的 Java 进程的进程 ID、主类名或 JAR 文件名,以及传递给主类的参数和虚拟机参数。
5. jps -q :仅显示当前正在运行的 Java 进程的进程 ID,不显示类名或 JAR 文件名。
tar解压
tar -zxvf 压缩文件名.tar.gz
tar -zxvf example.tar.gz -C /path/to/destination/directory/
命令分解说明:
tar
: 表示使用tar工具。
-z
: 选项指示tar在解压过程中使用gzip解压缩算法。
-x
: 选项表示执行解压操作(extract)。
-v
: (可选)增加详细输出,显示解压过程中的文件名。
-f
: 指定后续跟的是要操作的档案文件名。
nohup 守护进程运行应用
nohup
是一个在类 Unix 操作系统(如 Linux 和 macOS)中广泛使用的命令,全称是 "no hang up",即“不挂断”。它的主要目的是允许用户在终端断开连接或注销账户后,仍然能够让指定的命令或程序在后台继续运行,不受 SIGHUP(挂起)信号的影响。
nohup java -jar your-project.jar &
如果你想要将输出重定向到一个日志文件,可以这样做:
nohup java -jar your-project.jar > /tmp/wms.log 2>&1 &