ps命令使用¶
显示进程信息,参数可省略:
aux 以 BSD 风格显示进程 常用
-efH 以 System V 风格显示进程
-e , -A 显示所有进程
a 显示终端上所有用户的进程
x 显示无终端进程
u 显示详细信息
f 树状显示
w 完整显示信息
l 显示长列表
-o <format> //--format <format>
列属性:
USER 进程的属主;
PID 进程的ID;
PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
NI 进程的NICE值,数值大,表示较少占用CPU时间;
VSZ 該进程使用的虚拟內存量(KB);
RSS 該進程占用的固定內存量(KB)(驻留中页的数量);
TTY 該進程在那個終端上運行(登陸者的終端位置),若與終端無關,則顯示(?)。若為pts/0等,則表示由網絡連接主機進程
WCHAN 當前進程是否正在進行,若為-表示正在進行;
START 該進程被觸發启动时间;
TIME 該进程實際使用CPU運行的时间;
COMMAND 命令的名称和参数;
PGID:进程组 ID(Process Group ID)
SID:会话 ID(Session ID)
TPGID:控制终端的进程组 ID(Terminal Process Group ID)。
STAT:进程状态(Process State)。
UID:用户 ID(User ID)。
ps工具标识进程的5种状态码(STAT):
D 无法中断的休眠状态(通常 IO 的进程)uninterruptible sleep (usually IO)
R 进程当前正在执行或在运行队列中等待执行
runnable (on run queue)
S 处于休眠状态, sleeping
T 停止或被追踪, traced or stopped
可能是由于收到了 SIGSTOP、SIGTSTP、SIGTTIN 或 SIGTTOU 信号
W 进入内存交换 (从内核2.6开始无效)
X 死掉的进程 (基本很少見)
Z 僵尸进程, a defunct (”zombie”) process
僵尸(Zombie)- 进程已经终止,但其父进程尚未调用 wait() 或 waitpid() 来获取其终止状态。
僵尸进程的进程描述符仍然存在于系统中。
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
进程的内存页被锁定在 RAM 中,不允许被换出
s 进程的领导者(在它之下有子进程)
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads)
+ 位于后台的进程组
示例¶
常用命令¶
ps axjf:
# 查看父进程
$ ps axjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 289233 289233 289233 pts/5 289256 Ss 0 0:00 bash
289233 289256 289256 289233 pts/5 289256 R+ 0 0:00 \_ ps axjf
0 289174 289174 289174 pts/4 289187 Ss 0 0:00 bash
289174 289187 289187 289174 pts/4 289187 S+ 0 0:00 \_ vim output.log
ps aux:
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 145 0.0 0.0 4632 3940 pts/0 Ss 2024 0:00 bash
root 159 0.0 0.0 4956 4224 pts/0 S+ 2024 0:12 watch -n 1 nvidia-smi
root 24380 0.0 0.0 4632 4004 pts/2 Ss 2024 0:00 bash
root 24394 0.0 0.0 3756 3064 pts/2 S+ 2024 1:17 watch -n 1 nvidia-smi
ps alx:
$ ps alx
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 145 0 20 0 4632 3940 - Ss pts/0 0:00 bash
0 0 159 145 20 0 4956 4224 - S+ pts/0 0:12 watch -n 1 nvidia-smi
4 0 15877 0 20 0 4632 4020 - Ss pts/1 0:00 bash
0 0 19933 15877 20 0 7336 3292 - S+ pts/1 0:00 top
4 0 24380 0 20 0 4632 4004 - Ss pts/2 0:00 bash
ps -ef:
# 显示所有进程信息,连同命令行(显示父pid->ppid)
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 2024 ? 00:34:42 python3 -m vllm.entrypoints.openai.api_server --model /root/models/Qwen2.5-32B-Instruct
root 145 0 0 2024 pts/0 00:00:00 bash
root 159 145 0 2024 pts/0 00:00:12 watch -n 1 nvidia-smi
root 15877 0 0 2024 pts/1 00:00:00 bash
root 19933 15877 0 2024 pts/1 00:00:00 top
ps –eLf:
$ ps -eLF
UID PID PPID LWP C NLWP SZ RSS PSR STIME TTY TIME CMD
root 1 0 1 0 48 1686693 832260 8 2024 ? 00:33:38 python3 -m vllm.entrypoints.openai.api_server --model /root/models/Qwen2.5-32B-Instruct
root 1 0 7 0 48 1686693 832260 4 2024 ? 00:00:00 python3 -m vllm.entrypoints.openai.api_server --model /root/models/Qwen2.5-32B-Instruct
root 1 0 8 0 48 1686693 832260 6 2024 ? 00:00:00 python3 -m vllm.entrypoints.openai.api_server --model /root/models/Qwen2.5-32B-Instruct
root 145 0 145 0 1 1158 3940 5 2024 pts/0 00:00:00 bash
root 159 145 159 0 1 1239 4224 10 2024 pts/0 00:00:12 watch -n 1 nvidia-smi
ps -eF:
$ ps -eF
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
root 1 0 0 1686693 832260 6 2024 ? 00:34:42 python3 -m vllm.entrypoints.openai.api_server --model /root/models/Qwen2.5-32B-Instruct
root 145 0 0 1158 3940 5 2024 pts/0 00:00:00 bash
root 159 145 0 1239 4224 10 2024 pts/0 00:00:12 watch -n 1 nvidia-smi
root 15877 0 0 1158 4020 0 2024 pts/1 00:00:00 bash
ps -ely:
ps -ely
S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD
S 0 35 1 0 80 0 11332 4075 - ? 00:00:00 python3
S 0 145 0 0 80 0 3940 1158 - pts/0 00:00:00 bash
S 0 159 145 0 80 0 4224 1239 - pts/0 00:00:12 watch
S 0 15877 0 0 80 0 4020 1158 - pts/1 00:00:00 bash
一些常用示例¶
To see every process on the system using BSD syntax:
ps ax
ps axu
To print a process tree:
ps -ejH
ps axjf
To get info about threads:
ps -eLf // 常用
ps axms
To get security info:
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM
To see every process running as root (real & effective ID) in user format:
ps -U root -u root u
用户自定义模式看进程:
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -eopid,tt,user,fname,tmout,f,wchan
只打印syslogd的进程id:
ps -C syslogd -o pid=
只打印PID为42的进程名:
ps -p 42 -o comm=
实例-输出指定列¶
ps -o rss
ps -o vsz
展示格式:
rss RSS
resident set size, the non-swapped physical memory that a task has used (in kiloBytes).
(alias rssize, rsz).
实际驻留"在内存中"的内存数. 不包括已经交换出去的代码. 举一个例子:
如果你有一个程序使用了100K内存, 操作系统交换出40K内存, 那么RSS为60K.
RSS还包括了与其它进程共享的内存区域. 这些区域通常用于libc库等
vsz VSZ
virtual memory size of the process in KiB (1024-byte units).
Device mappings are currently excluded; this is subject to change. (alias vsize).
size SZ
approximate amount of swap space that would be required if the process were
to dirty all writable pages and then be swapped out. This number is very rough!
进程使用的地址空间, 如果进程映射了100M的内存, 进程的地址空间将报告为100M内存.
事实上, 这个大小不是一个程序实际使用的内存数
sz SZ
size in physical pages of the core image of the process.
This includes text, data, and stack space.
Device mappings are currently excluded; this is subject to change. See vsz and rss.
(Private RSS): 映射到内存中的页面, 这些页面仅由进程单独使用.
这也是我们最关心地方: 进程实际占用的内存数