linux的ps命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux的ps命令相关的知识,希望对你有一定的参考价值。

我的用户开了好几个程序,而且后台应该也有不少程序,为什么输入ps -l之后结果是:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 8152 2916 0 80 0 - 1683 wait pts/1 00:00:00 bash
0 R 1000 8496 8152 0 80 0 - 1093 - pts/1 00:00:00 ps
看不懂。。。

  Linux中的ps命令是Process Status的缩写,顾名思义,就是查看进程状态。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
  要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
  ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具。

  ps工具标识进程的5种状态码:
  D 不可中断 uninterruptible sleep (usually IO)
  R 运行 runnable (on run queue)
  S 中断 sleeping
  T 停止 traced or stopped
  Z 僵死 a defunct (”zombie”) process

  1.命令格式:
  ps [参数]

  2.命令功能:
  用来显示当前进程的状态。

  3.命令参数:
  a 显示所有进程
  -a 显示同一终端下的所有程序
  -A 显示所有进程
  c 显示进程的真实名称
  -N 反向选择
  -e 等于“-A”
  e 显示环境变量
  f 显示程序间的关系
  -H 显示树状结构
  r 显示当前终端的进程
  T 显示当前终端的所有程序
  u 指定用户的所有进程
  -au 显示较详细的资讯
  -aux 显示所有包含其他使用者的行程
  -C<命令> 列出指定命令的状况
  --lines<行数> 每页显示的行数
  --width<字符数> 每页显示的字符数
  --help 显示帮助信息
  --version 显示版本显示
参考技术A

linux命令ps详解:

    使用权限:所有使用者(用户)

    使用方式:ps [options] [--help]
    说明:显示瞬间行程 (process) 的动态
    参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
    -A    列出所有的进程
    -w    显示加宽可以显示较多的资讯
    -au    显示较详细的资讯
    -aux    显示所有包含其他使用者的行程

    常用参数:

    -A 显示所有进程(等价于-e)(utility)

    -a 显示一个终端的所有进程,除了会话引线

    -N 忽略选择。

    -d 显示所有进程,但省略所有的会话引线(utility)

    -x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用(utility)

    -p pid 进程使用cpu的时间

    -u uid or username 选择有效的用户id或者是用户名

    -g gid or groupname 显示组的所有进程。

    U username 显示该用户下的所有进程,且显示各个命令的详细路径

    -f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on

    -l 长格式(有F,wchan,C 等字段)

    -j 作业格式

    -o 用户自定义格式

    v 以虚拟存储器格式显示

    s 以信号格式显示

    -m 显示所有的线程

    -H 显示进程的层次(和其它的命令合用

    e 命令之后显示环境

    h 不显示第一行

    最常用的方法是ps -aux,然后再ps命令常用用法(方便查看系统进程)

    1)ps a 显示现行终端机下的所有程序,包括其他用户的程序

    2)ps -A 显示所有进程

    3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示

    4)ps -e 此参数的效果和指定"A"参数相同

    5)ps e 列出程序时,显示每个程序所使用的环境变量

    6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系

    7)ps -H 显示树状结构,表示程序间的相互关系

    8)ps -N 显示所有的程序,除了执行ps指令终机下的程序之外

    9)ps s 采用程序信号的格式显示程序状况

    10)ps S 列出程序时,包括已中断的子程序资料

    11)ps -t<终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况

    12)ps u  以用户为主的格式来显示程序状况

    13)ps x  显示所有程序,不以终端机来区分

    最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。

参考技术B 和top里面是有Ss的
man了一下 ps和top
解释如下

PROCESS STATE CODES
Here are the different values that the s, stat and state output specifiers
(header "STAT" or "S") will display to describe the state of a process.
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for an event to complete)
T Stopped, either by a job control signal or because it is being traced.
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.

For BSD formats and when the stat keyword is used, additional characters may
be displayed:
< 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本回答被提问者采纳
参考技术C ps默认只会显示当前终端下的进程,加上-l参数,只是进程的显示资料更详细些,不会显示更多的进程,详细内容可以查看:http://www.01happy.com/linux-ps-view-process/

参考资料:http://www.01happy.com/linux-ps-view-process/

参考技术D ps -aux
ps -ef

Linux之ps命令

Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。

要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。

ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具。

kill 命令用于杀死进程。

Linux中进程有5种状态

  1. 运行(正在运行或在运行队列中等待)
  2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps工具标识进程的5种状态码

  • D 不可中断 uninterruptible sleep (usually IO)
  • R 运行 runnable (on run queue)
  • S 中断 sleeping
  • T 停止 traced or stopped
  • Z 僵死 a defunct (”zombie”) process

命令语法

ps (参数)

命令参数

  • -a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
  • a:显示现行终端机下的所有程序,包括其他用户的程序。
  • -A:显示所有程序。
  • -c:显示CLS和PRI栏位。
  • c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。
  • -C<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。
  • -d:显示所有程序,但不包括阶段作业领导者的程序。
  • -e:此选项的效果和指定"A"选项相同。
  • e:列出程序时,显示每个程序所使用的环境变量。
  • -f:显示UID,PPIP,C与STIME栏位。
  • f:用ASCII字符显示树状结构,表达程序间的相互关系。
  • -g<群组名称>:此选项的效果和指定"-G"选项相同,当亦能使用阶段作业领导者的名称来指定。
  • g:显示现行终端机下的所有程序,包括群组领导者的程序。
  • -G<群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。
  • h:不显示标题列。
  • -H:显示树状结构,表示程序间的相互关系。
  • -j或j:采用工作控制的格式显示程序状况。
  • -l或l:采用详细的格式来显示程序状况。
  • L:列出栏位的相关信息。
  • -m或m:显示所有的执行绪。
  • n:以数字来表示USER和WCHAN栏位。
  • -N:显示所有的程序,除了执行ps指令终端机下的程序之外。
  • -p<程序识别码>:指定程序识别码,并列出该程序的状况。
  • p<程序识别码>:此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。
  • r:只列出现行终端机正在执行中的程序。
  • -s<阶段作业>:指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。
  • s:采用程序信号的格式显示程序状况。
  • S:列出程序时,包括已中断的子程序资料。
  • -t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。
  • t<终端机编号>:此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。
  • -T:显示现行终端机下的所有程序。
  • -u<用户识别码>:此选项的效果和指定"-U"选项相同。
  • u:以用户为主的格式来显示程序状况。
  • -U<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。
  • U<用户名称>:列出属于该用户的程序的状况。
  • v:采用虚拟内存的格式显示程序状况。
  • -V或V:显示版本信息。
  • -w或w:采用宽阔的格式来显示程序状况。 
  • x:显示所有程序,不以终端机来区分。
  • X:采用旧式的Linux i386登陆格式显示程序状况。
  • -y:配合选项"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。
  • -<程序识别码>:此选项的效果和指定"p"选项相同。
  • --cols<每列字符数>:设置每列的最大字符数。
  • --columns<每列字符数>:此选项的效果和指定"--cols"选项相同。
  • --cumulative:此选项的效果和指定"S"选项相同。
  • --deselect:此选项的效果和指定"-N"选项相同。
  • --forest:此选项的效果和指定"f"选项相同。
  • --headers:重复显示标题列。
  • --help:在线帮助。
  • --info:显示排错信息。
  • --lines<显示列数>:设置显示画面的列数。
  • --no-headers:此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。
  • --group<群组名称>:此选项的效果和指定"-G"选项相同。
  • --Group<群组识别码>:此选项的效果和指定"-G"选项相同。
  • --pid<程序识别码>:此选项的效果和指定"-p"选项相同。
  • --rows<显示列数>:此选项的效果和指定"--lines"选项相同。
  • --sid<阶段作业>:此选项的效果和指定"-s"选项相同。
  • --tty<终端机编号>:此选项的效果和指定"-t"选项相同。
  • --user<用户名称>:此选项的效果和指定"-U"选项相同。
  • --User<用户识别码>:此选项的效果和指定"-U"选项相同。
  • --version:此选项的效果和指定"-V"选项相同。
  • --widty<每列字符数>:此选项的效果和指定"-cols"选项相同。

显示所有进程信息

> ps -A
  PID TTY          TIME CMD
    1 ?        00:11:10 systemd
    2 ?        00:00:04 kthreadd
    4 ?        00:00:00 kworker/0:0H
    6 ?        00:00:07 ksoftirqd/0
    7 ?        00:00:02 migration/0
    8 ?        00:00:00 rcu_bh
    9 ?        00:43:24 rcu_sched
   10 ?        00:00:00 lru-add-drain
   11 ?        00:00:12 watchdog/0
   12 ?        00:00:10 watchdog/1
   13 ?        00:00:11 migration/1
   14 ?        00:06:22 ksoftirqd/1
   16 ?        00:00:00 kworker/1:0H
   17 ?        00:00:11 watchdog/2
   ...

显示指定用户启动的线程

> ps -u deploy
  PID TTY          TIME CMD
 7698 ?        00:29:50 java
13783 ?        00:16:42 java
30027 ?        00:03:20 java

显示所有进程信息和命令行

> ps -ef 
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Jan08 ?        00:11:10 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2     0  0 Jan08 ?        00:00:04 [kthreadd]
root         4     2  0 Jan08 ?        00:00:00 [kworker/0:0H]
root         6     2  0 Jan08 ?        00:00:07 [ksoftirqd/0]
root         7     2  0 Jan08 ?        00:00:02 [migration/0]

ps与grep常用组合用法,查找特定进程

> ps -ef | grep java
ps -ef | grep ssh
root      1394     1  0 Jan08 ?        00:04:23 /usr/sbin/sshd -D
root     30899  1394  0 22:44 ?        00:00:00 sshd: root@pts/2
root     30922 30899  0 22:44 ?        00:00:00 /usr/libexec/openssh/sftp-server
root     31625  1394  0 22:49 ?        00:00:00 sshd: root [priv]
sshd     31627 31625  0 22:49 ?        00:00:00 sshd: root [net]
root     31804 30905  0 22:50 pts/2    00:00:00 grep --color=auto ssh

将目前属于您自己这次登入的PID与相关信息列示出来

> ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 R     0  1275 30905  0  80   0 - 38304 -      pts/2    00:00:00 ps
4 S     0 30905 30899  0  80   0 - 28895 do_wai pts/2    00:00:00 bash
  • F 代表这个程序的旗标 (flag), 4 代表使用者为 super user
  • S 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内文介绍
  • UID 程序被该 UID 所拥有
  • PID 就是这个程序的 ID !
  • PPID 则是其上级父程序的ID
  • C CPU 使用的资源百分比
  • PRI 这个是 Priority (优先执行序) 的缩写,详细后面介绍
  • NI 这个是 Nice 值,在下一小节我们会持续介绍
  • ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"
  • SZ 使用掉的内存大小
  • WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作
  • TTY 登入者的终端机位置
  • TIME 使用掉的 CPU 时间。
  • CMD 所下达的指令为何

列出类似程序树的程序显示

> ps -axjf
    1  1394  1394  1394 ?           -1 Ss       0   4:23 /usr/sbin/sshd -D
 1394 30899 30899 30899 ?           -1 Ss       0   0:00  \\_ sshd: root@pts/2
30905  1873  1872 30905 pts/2     1872 S+       0   0:00      |   \\_ grep --color=auto ssh
30899 30922 30922 30922 ?           -1 Ss       0   0:00      \\_ /usr/libexec/openssh/sftp-server

分页查看进程信息

> ps aux | more

每一列的解释

> ps aux | more
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
  • USER 进程的用户;
  • PID 进程的ID;
  • %CPU 进程占用的CPU百分比;
  • %MEM 占用内存的百分比;
  • VSZ 该进程使用的虚拟内存量(KB);
  • RSS 该进程占用的固定内存量(KB);
  • TTY 该进程在哪个终端上运行(登陆者的终端位置),若与终端无关,则显示(?)。若为pts/0等,则表示由网络连接主机进程;
  • START 该进程被触发启动时间;
  • TIME 该进程实际使用CPU运行的时间;
  • COMMAND 命令的名称和参数;
STAT状态位常见的状态字符
  • D 无法中断的休眠状态(通常 IO 的进程);
  • R 正在运行可中在队列中可过行的;
  • S 处于休眠状态;
  • T 停止或被追踪;
  • W 进入内存交换 (从内核2.6开始无效);
  • X 死掉的进程 (基本很少见);
  • Z 僵尸进程;
  • < 优先级高的进程;
  • N 优先级较低的进程;
  • L 有些页被锁进内存;
  • s 进程的领导者(在它之下有子进程);
  • l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
    • 位于后台的进程组;

把所有的进程信息输入到rumenz.txt文件

> ps aux > rumenz.txt

输出指定的字段

> ps -o pid,ppid,pgrp,session,tpgid,comm
 PID  PPID  PGRP  SESS TPGID COMMAND
 2292 30905  2292 30905  2292 ps
30905 30899 30905 30905  2292 bash

ps auxps –aux的区别

请注意ps -aux不同于ps aux。POSIX和UNIX的标准要求ps -aux打印用户名为x的用户的所有进程,以及打印所有将由-a选项选择的过程。如果用户名为x不存在,ps的将会解释为ps aux,而且会打印一个警告。这种行为是为了帮助转换旧脚本和习惯。它是脆弱的,即将更改,因此不应依赖。

ps auxps -ef

两者的输出结果差别不大,但展示风格不同。auxBSD风格,-efSystem V风格。这是次要的区别,一个影响使用的区别是aux会截断command列,而-ef不会。当结合grep时这种区别会影响到结果。

原文链接:https://rumenz.com/rumenbiji/...
微信公众号:入门小站

以上是关于linux的ps命令的主要内容,如果未能解决你的问题,请参考以下文章

linux 下述命令的功能各是啥 ps ps-1 ps-el ps ru

Linux之ps命令

linux 下 ps -aux 命令

linux命令中ps -ef是啥意思

linux常用命令:ps 命令

linux命令学习:ps命令