Linux中的ps命令是Process Status的缩写。ps命令用于报告当前系统的进程状态,列出系统中当前运行的那些进程。可以搭配kill指令随时中断、删除不必要的程序。

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

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

  kill 命令用于杀死进程。

linux上进程有5种状态: 

1. 运行(正在运行或在运行队列中等待)

2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)

3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)

4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)

5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps工具标识进程的5种状态码(S): 

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:显示所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"选项相同。

常用示例:

1、显示所有进程信息

  命令:ps -A

[root@CTU1000094955 ~]# ps -A
PID TTY TIME CMD
? :: systemd
? :: kthreadd
? :: ksoftirqd/
? :: kworker/:0H
? :: migration/
? :: rcu_bh
? :: rcuob/
... ...#中间省略了部分
? :: sshd
pts/ :: bash
? :: kworker/:
? :: kworker/:
? :: kworker/:
? :: setroubleshootd
? :: sleep
pts/ :: ps
? :: kworker/:
? :: java
? :: accounts-daemon
? :: mysqld_safe
? :: mysqld
? :: kworker/u256:
? :: polkitd

2、显示指定用户信息

  命令:ps -u root

[root@CTU1000094955 ~]# ps -u root
PID TTY TIME CMD
? :: systemd
? :: kthreadd
? :: ksoftirqd/
? :: kworker/:0H
? :: migration/
? :: rcu_bh
? :: rcuob/
? :: rcuob/
... ... 中间省略了部分
? :: sshd
pts/ :: bash
? :: sleep
pts/ :: ps
? :: java
? :: accounts-daemon
? :: mysqld_safe
? :: kworker/u256:

3、显示所有进程信息,连同命令行

  命令:ps -ef

[root@CTU1000094955 ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root Oct04 ? :: /usr/lib/systemd/systemd --switched-root --system --deserialize
root Oct04 ? :: [kthreadd]
root Oct04 ? :: [ksoftirqd/]
root Oct04 ? :: [kworker/:0H]
root Oct04 ? :: [migration/]
... ... 中间省略了部分
root : ? :: sshd: root@pts/
root : pts/ :: -bash
root : ? :: sleep
root : pts/ :: ps -ef
root Nov16 ? :: /biz/maas/cmdp/jre/bin/java -Djava.util.logging.config.file=/biz/maas/cmdp/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apa
root Oct30 ? :: /usr/libexec/accounts-daemon
root Oct30 ? :: /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/CTU1000094955.pid
mysql Oct30 ? :: /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mariadb/maria
root Nov11 ? :: [kworker/u256:]
polkitd Oct10 ? :: /usr/lib/polkit-/polkitd --no-debug

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

  命令:ps -ef|grep ssh

[root@CTU1000094955 ~]# ps -ef|grep ssh
root Oct31 ? :: /usr/sbin/sshd -D
root : ? :: sshd: root@pts/
root : pts/ :: grep --color=auto ssh

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

  命令:ps -l

[root@CTU1000094955 ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
S - wait pts/ :: bash
R - - pts/ :: ps

  说明:

F 代表这个程序的旗标 (flag):4 代表此进程的权限为root;为1表示此子进程仅可进行复制(fork),而无法实际执行(exec)。

S 代表这个程序的状态 (STAT),关于各 STAT 的含义已在上问题出。

UID 程序被该 UID 所拥有

PID 就是这个程序的 ID !

PPID 则是其上级父程序的ID

C CPU 使用的资源百分比

PRI/NI Priority /Nice的缩写,代表此进程被CPU所执行的优先级,数值越小代表该进程越快被CPU执行

ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"

SZ 使用掉的内存大小

WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作

TTY 登陆者的终端机位置,若为远程登录则使用动态终端口(pts/n)

TIME 使用掉的 CPU 时间。是此进程实际花费CPU运行的时间,而不是系统时间。

CMD Command的缩写,造成此程序的触发进程的命令为何种命令

  为何在预设的情况下, ps 仅会列出与目前所在的 bash shell 有关的 PID 而已,所以, 当我使用 ps -l 的时候,只有2个 PID。

6、列出目前所有的正在内存当中的程序

  命令:ps aux

[root@CTU1000094955 ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 0.0 0.1 ? Ss Oct04 : /usr/lib/systemd/systemd --switched-root --system --deserialize
root 0.0 0.0 ? S Oct04 : [kthreadd]
root 0.0 0.0 ? S Oct04 : [ksoftirqd/]
... ...中间省略了部分内容
root 0.2 12.5 ? Sl Nov16 : /biz/maas/cmdp/jre/bin/java -Djava.util.logging.config.file=/biz/maas/cmdp/tomcat/conf/logging.properties -Djava.util.logging
root 0.0 0.0 ? S : : sleep
root 0.0 0.0 pts/ R+ : : ps aux
root 0.0 0.0 ? Ssl Oct30 : /usr/libexec/accounts-daemon
root 0.0 0.0 ? S Oct30 : /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/CTU1000094955.pid
mysql 0.0 6.4 ? Sl Oct30 : /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/l
root 0.0 0.0 ? S Nov11 : [kworker/u256:]
polkitd 0.1 6.3 ? Ssl Oct10 : /usr/lib/polkit-/polkitd --no-debug

  说明(与ps -l并不相同):

USER:该 process 属于那个使用者账号的

PID :该 process 的号码

%CPU:该 process 使用掉的 CPU 资源百分比

%MEM:该 process 所占用的物理内存百分比

VSZ :该 process 使用掉的虚拟内存量 (Kbytes)

RSS :该 process 占用的固定的内存量 (Kbytes)

TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。

STAT:该程序目前的状态,主要的状态有

R :该程序目前正在运作,或者是可被运作

S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。

T :该程序目前正在侦测或者是停止了

Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

START:该 process 被触发启动的时间

TIME :该 process 实际使用 CPU 运作的时间

COMMAND:该程序的实际指令

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

  命令:ps -axjf

[root@CTU1000094955 ~]# ps -axjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
? - S : [kthreadd]
? - S : \_ [ksoftirqd/]
? - S< : \_ [kworker/:0H]
? - S : \_ [migration/] ... ...中间省略了部分内容
? - Ssl : /usr/lib/polkit-/polkitd --no-debug
? - Z : \_ [pkla-check-auth] <defunct> ? - Ssl : /usr/libexec/accounts-daemon
? - S : /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/CTU1000094955.pid
? - Sl : \_ /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/l
? - Ss : /usr/sbin/sshd -D
? - Ss : \_ sshd: root@pts/
pts/ Ss : \_ -bash
pts/ R+ : \_ ps -axjf
? - Sl : /biz/maas/cmdp/jre/bin/java -Djava.util.logging.config.file=/biz/maas/cmdp/tomcat/conf/logging.properties -Djava.util.logging.man
? - Sl : /usr/bin/python -Es /usr/sbin/setroubleshootd -f

8、找出与 cron 与 syslog 这两个服务有关的 PID 号码

  命令:ps aux | egrep '(cron|syslog)'

[root@CTU1000094955 ~]# ps aux | egrep '(cron|syslog)'
root 0.0 0.2 ? Ssl Oct04 : /usr/sbin/rsyslogd -n
root 0.0 0.0 ? Ss Oct04 : /usr/sbin/crond -n
gnome-i+ 0.0 0.0 ? S<l Oct04 : /usr/bin/pulseaudio --start --log-target=syslog
root 0.0 0.0 pts/ S+ : : grep -E --color=auto (cron|syslog)

9、可以用 | 管道和 more 连接起来分页查看

  命令:ps -aux |more

[root@CTU1000094955 ~]# ps -aux |more
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 0.0 0.1 ? Ss Oct04 : /usr/lib/systemd/systemd --switched-root --system --deserialize
root 0.0 0.0 ? S Oct04 : [kthreadd]
... ... 中间省略了部分
root 0.0 0.0 ? S Oct04 : [rcuob/]
root 0.0 0.0 ? S Oct04 : [rcuob/]
root 0.0 0.0 ? S Oct04 : [rcuob/]
--More--

10、把所有进程显示出来,并输出到ps001.txt文件

  命令:ps -aux > 目的文件

[root@CTU1000094955 ~]# ps -aux > pstest.txt
[root@CTU1000094955 ~]# ll
total
-rw-------. root root Jan anaconda-ks.cfg
drwxr-xr-x. root root Jan Desktop
drwxr-xr-x. root root Jan Documents
drwxr-xr-x. root root Nov : Downloads
-rw-------. root root Jan initial-setup-ks.cfg
drwxr-xr-x. root root Jan Music
drwxr-xr-x. root root Jan Pictures
-rw-r--r--. root root Nov : pstest.txt

11、输出指定的字段

  命令:ps -o pid,ppid,pgrp,session,tpgid,comm

[root@CTU1000094955 ~]# ps -o pid,ppid,pgrp,session,tpgid,comm
PID PPID PGRP SESS TPGID COMMAND
bash
ps

linux命令学习之:ps的更多相关文章

  1. 别出心裁的Linux命令学习法

    别出心裁的Linux命令学习法 操作系统操作系统为你完成所有"硬件相关.应用无关"的工作,以给你方便.效率.安全.操作系统的功能我总结为两点:管家婆和服务生: 管家婆:通过进程.虚 ...

  2. 《Linux命令学习手册》系列分享专栏

    <Linux命令学习手册>系列分享专栏 <Linux命令学习手册>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/207 ...

  3. Linux命令学习笔记目录

    Linux命令学习笔记目录 最近正在使用,linux,顺便将用到的命令整理了一下. 一. 文件目录操作命令: 0.linux命令学习笔记(0):man 命令 1.linux命令学习笔记(1):ls命令 ...

  4. Linux命令学习

    Linux命令学习 Ubuntu常用快捷键 •Ctrl+Alt+T: 打开终端 •Ctrl+Shift+T: 新建标签页 •Tab: 终端中命令补全 •Alt+数字N: 终端中切换到第N个标签页 •↑ ...

  5. Linux命令学习总结之rmdir命令的相关资料可以参考下

    这篇文章主要介绍了Linux命令学习总结之rmdir命令的相关资料,需要的朋友可以参考下(http://www.nanke0834.com) 命令简介: rmdir命令用用来删除空目录,如果目录非空, ...

  6. linux命令学习之:chmod

    chmod命令用来变更文件或目录的权限.在Linux系统家族里,文件或目录权限的控制分别以读取R.写入W.执行X3种一般权限来区分,另有3种特殊权限可供运用.用户可以使用chmod指令去变更文件与目录 ...

  7. Linux命令学习笔记1

    1.Linux命令学习 2.Mkdir /data       -创建文件夹 在/下创建文件夹 data 3.Cd               -目录切换 列如cd / 4.Touch /data/1 ...

  8. 20155229付钰涵-虚拟机安装及LINUX命令学习

    安装Ubuntu遇到的问题 问题一: 新建虚拟电脑的版本只有32-bit,与老师所给教程中的64-bit不符.为此我上百度搜寻了答案. 第一种方法: 控制面板--程序与功能--启动或关闭windows ...

  9. 安装虚拟机&Linux命令学习

    安装虚拟机&Linux命令学习 基于VirtualBox虚拟机安装Ubuntu 1.下载安装VirtualBox 根据自己电脑(32位操作系统)的实际情况,我在网上找了相应的VirtualBo ...

  10. (转)Linux命令学习总结:dos2unix - unix2dos

    Linux命令学习总结:dos2unix - unix2dos 命令简介: 原文:http://www.cnblogs.com/kerrycode/p/5077969.html dos2unix是将W ...

随机推荐

  1. 初识AutoMapper

    在开始本篇文章之前,先来思考一个问题:一个项目分多层架构,如显示层.业务逻辑层.服务层.数据访问层.层与层访问需要数据载体,也就是类.如果多层通用一个类,一则会暴露出每层的字段,二者会使类字段很多,而 ...

  2. 三,APIView、GenericAPIView、Mixins总结

    概述 APIView是DRF的视图层中最基本的类,它相当于Django中的View类,其他视图类都是通过继承APIView实现的. GenericAPIView继承于APIView,在其父类的基础上为 ...

  3. Ros系列_学习一

    刚入门ROS,不,没入门,还在门口,这是今天的总结: (一)创建一个工作空间 1.创建一个初始工作空间: mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src cat ...

  4. border&background1

    1.border-radius border-top-left-radius:10px; = border-top-left-radius:10px 10px; (水平10px 竖直10px 被正圆切 ...

  5. AMQP协议与RabbitMQ、MQ消息队列的应用场景

    什么是AMQP? 在异步通讯中,消息不会立刻到达接收方,而是被存放到一个容器中,当满足一定的条件之后,消息会被容器发送给接收方,这个容器即消息队列,而完成这个功能需要双方和容器以及其中的各个组件遵守统 ...

  6. is 和 as 运算符

    is和as运算符:is是判断是否是某个类型,返回true或falseo as Ren: 如果转换成功了,没问题:as 是用来转换如果没转换成功,不会报出错误,而是返回一个null值 例 实例化一个集合 ...

  7. 使用Java实现对一个数组的增删改查以及初始化

    import java.util.*; import java.lang.*; public class Array { private int[] data;// 数组 private int si ...

  8. python学习day9 字符编码和文件处理

    1.字符编码 x='上' #unicode的二进制--------->编码-------->gbk格式的二进制 res=x.encode('gbk') #bytes 字节类型 print( ...

  9. Java获得数据库查询结果的列数和行数,打印查询结果

    Java连接数据库及简单操作见我以前的一篇随笔:http://www.cnblogs.com/meitian/p/5036332.html   一.获取查询结果的行数和列数 查询结果为ResultSe ...

  10. python3 文件读写,编码错误UnicodeDecodeError

    问题:python3 with open文件进行读写,报编码错误 /usr/local/Cellar/python3/3.5.2/Frameworks/Python.framework/Version ...