在 Mac、64 位、osx 10.8.5 上,我的两个 ps aux 输出行加上标题是;
$ ps aux |头 用户 PID %CPU %MEM VSZ RSS TT STAT 开始时间命令 myuid 16402 0.0 0.0 2432768 600 s005 R+ 9:57PM 0:00.00 grep mongo myuid 16071 0.0 0.1 3045380 20036 s001 S+ 10:13PM 0:00.51 mongo --nodb
我找不到有关 STAT、状态、列的任何文档。这些项目是什么意思以及/或者我如何进一步研究这一点?
没有帮助的事情;维基百科;https://en.wikipedia.org/wiki/Ps_%28Unix%29 另一位在这里提出类似问题的发帖者没有得到回复;https://superuser.com/questions/723080/linuxfedora-what-does-these-stats-column-mean-for-ps-aux-command
答案1
从 Linux 系统 (man ps):
D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped by job control signal
t stopped by debugger during the tracing
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by its parent
此外:
< high-priority (not nice to other users)
N low-priority (nice to other users)
L has pages locked into memory (for real-time and custom IO)
s is a session leader
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ is in the foreground process group
答案2
来自OSX 手册页:
附言 (1)
目录名称
ps-进程状态
概要
ps [-aCcefhjlMmrSTuvwx] [-O fmt] [-o fmt] [-p pid] [-t tty] [-U 用户名] ps [-L]
描述
ps 显示一个标题行,后面跟着包含有关具有控制终端的进程的信息的行。此信息按控制终端排序,然后按进程 ID 排序。
显示的信息是根据一组关键字选择的(参见 -L -O 和 -o 选项)。默认输出格式包括每个进程的进程 ID、控制终端、CPU 时间(包括用户和系统时间)、状态和相关命令。
执行 ps 时应挂载进程文件系统(参见 procfs(5) ),否则将无法获得所有信息。
选项如下:
-a 显示有关其他用户以及您自己的进程的信息。
-c 将“命令”列输出更改为仅包含可执行文件名称,而不是完整的命令行。
-C 通过使用驻留时间来更改计算 CPU 百分比的方式
raw'' cpu calculation that ignores
(这通常没有效果)。-e 同时显示环境。
-f 显示有关交换出进程的命令行和环境信息。仅当用户的 uid 为 0 时才启用此选项。
-h 根据需要重复信息标题以保证每页信息都有一个标题。
-j 打印与以下关键字相关的信息:user、pid、ppid、pgid、sess、jobc、state、tt、time 和 command。
-L 列出可用的关键字集合。
-l 显示与以下关键字相关的信息:uid、pid、ppid、cpu、pri、nice、vsz、rss、wchan、state、tt、time 和 command。
-M 打印每个任务对应的线程。
-m 按内存使用情况排序,而不是按进程 ID 排序。
-O 在默认信息显示中,在进程 ID 之后添加与指定的空格或逗号分隔的关键字列表相关的信息。关键字可以附加等号(“=”)和字符串。这会导致打印的标题使用指定的字符串而不是标准标题。
-o 显示与空格或逗号分隔的指定关键字列表相关的信息。关键字可以附加等号(“=”)和字符串。这会导致打印的标题使用指定的字符串而不是标准标题。
-p 显示与指定进程 ID 相关的信息。
-r 按当前 CPU 使用率排序,而不是按进程 ID 排序。
-S 通过将所有退出的子进程与其父进程相加来改变进程时间的计算方式。
-T 显示与标准输入关联的设备所附加的进程的信息。
-t 显示有关连接到指定终端设备的进程的信息。
-U 显示属于指定用户名的进程。
-u 显示与以下关键字相关的信息:user、pid、%cpu、%mem、vsz、rss、tt、state、start、time 和 command。-u 选项隐含 -r 选项。
-v 显示与以下关键字相关的信息:pid、state、time、sl、re、pagein、vsz、rss、lim、tsiz、%cpu、%mem 和 command。-v 选项隐含 -m 选项。
-w 使用 132 列显示信息,而不是默认的窗口大小。如果多次指定 -w 选项,ps 将使用尽可能多的列,而不考虑窗口大小。
-x 显示有关不控制终端的进程的信息。下面列出了可用关键字的完整列表。其中一些关键字进一步指定如下:
%cpu 进程的 CPU 利用率;这是前一分钟(实际)时间的衰减平均值。由于计算该值的时间基数会发生变化(因为进程可能非常年轻),因此所有 %CPU 字段的总和可能会超过 100%。
%mem 此进程使用的实际内存百分比。 flags 与此进程关联的标志,如包含文件中所述:
P_ADVLOCK 0x00001 进程可能持有 POSIX 咨询锁
P_CONTROLT 0x00002 有一个控制终端
P_INMEM 0x00004 加载到内存
P_NOCLDSTOP 0x00008 子进程停止时无 SIGCHLD
P_PPWAIT 0x00010 父进程正在等待子进程执行/退出
P_PROFIL 0x00020 已开始分析
P_SELECT 0x00040 选择;唤醒/等待危险
P_SINTR 0x00080 睡眠可中断
P_SUGID 0x00100 自上次执行以来已设置 id 权限
P_SYSTEM 0x00200 系统进程:无信号、统计或交换
P_TIMEOUT 0x00400 睡眠期间超时
P_TRACED 0x00800 正在跟踪的调试进程
P_WAITED 0x01000 调试进程已等待子进程
P_WEXIT 0x02000 正在退出
P_EXEC 0x04000 调用 exec 的进程
P_NOSWAP 0x08000 另一个防止换出的标志
P_PHYSIO 0x10000 执行物理 I/O
P_OWEUPC 0x20000 下次调用 addupc() 时需要处理
P_SWAPPING 0x40000 进程正在交换
lim 所用内存的软限制,通过调用 setrlimit(2) 来指定。 lstart 命令启动的准确时间,使用 strftime(3) 中描述的“%c”格式。
nice 进程调度增量(参见 setpriority(2) )。 rss 进程的实际内存(驻留集)大小(以 1024 字节为单位)。 start 命令启动的时间。如果命令启动时间少于 24 小时,则使用
%l:ps.1p'' format described in strftime(3) . If the command started less than 7 days ago, the start time is displayed using the
%a6.15p'' 格式显示启动时间。否则,使用“%e%b%y”格式显示启动时间。状态状态由字母序列表示,例如
RWNA''. The first letter indicates the run state of the process: D Marks a process in disk (or other short term, uninterruptible) wait. I Marks a process that is idle (sleeping for longer than about 20 seconds). R Marks a runnable process. S Marks a process that is sleeping for less than about 20 seconds. T Marks a stopped process. Z Marks a dead process (a
“zombie”)。这些字母后面的附加字符(如果有)表示附加状态信息:
- 该进程位于其控制终端的前台进程组中。< 该进程已提高 CPU 调度优先级。
进程已指定内存需求的软限制,并且目前已超出该限制;这样的进程(必然)不会被交换。进程已请求随机页面替换(VA_ANOM,来自 vadvise(2),例如垃圾收集中的 lisp(1))。
E 该进程正在尝试退出。
L 该进程在核心中锁定了页面(例如,用于原始 I/O)。
N 该进程已降低 CPU 调度优先级(参见 setpriority(2) )。
S 该进程已请求 FIFO 页面替换(VA_SEQL,来自 vadvise(2) ,例如,使用虚拟内存按顺序寻址大量数据的大型图像处理程序)。
该进程是会话领导者。
V 在 vfork 期间进程暂停。
W 该进程被换出。
X 该进程正在被跟踪或调试。
tt 控制终端路径名的缩写(如果有)。缩写由 /dev/tty 后面的三个字母组成,或者,对于控制台,
con''. This is followed by a
如果进程无法再到达该控制终端(即,它已被撤销),则缩写为 -''。wchan 进程等待的事件(系统中的地址)。以数字形式打印时,地址的初始部分将被截断并以十六进制形式打印结果,例如,0x80324000 打印为 324000。使用命令关键字打印时,已退出且父进程尚未等待该进程(换句话说,僵尸进程)的进程将列为
<defunct>'', and a process which is blocked while trying to exit is listed as
''。Ps 通过检查内存或交换区域,对创建进程时给出的文件名和参数进行有根据的猜测。该方法本质上有些不可靠,而且无论如何,进程都有权销毁此信息,因此不能过分依赖名称。但是,可以依赖 ucomm(会计)关键字。关键词
以下是可用关键字及其含义的完整列表。其中一些关键字有别名(同义词)。
%cpu CPU 使用率百分比(别名 pcpu)
%mem 内存使用百分比(别名 pmem)
acflag 会计标志(别名 acflg)命令命令和参数 cpu 短期 CPU 使用率(用于调度)
以十六进制表示进程标志(别名 f)
gid 有效 gid
inblk 读取的总块数(别名 inblock)
jobc 作业控制计数
ktrace 跟踪标志
ktracep 跟踪 vnode
lim 内存使用限制
logname 启动进程的用户的登录名
lstart 时间开始
总计
minflt 总页面回收量
msgrcv 收到的消息总数
链接中有更多内容,我只是在格式化整个内容时懒得这么做了。