Linux下ps命令的10个基本例子

   在Linux下ps命令是用于查看系统上运行的进程的最基本的命令之一。它提供了当前进程的同时,如用户ID,CPU使用率,内存使用率,命令名称等,它不显示实时数据,如top或htop命令的详细信息。但是,即使是功能和输出简单,但它仍然是一个必用的过程管理/监控工具,每一个Linux新手应该知道这一点,好好学习。在这篇文章中,我们将使用ps命令以不同的方式来查看进程、筛选和排序它们,以加强基础部分。

  语法注意:

  ps命令带有2种不一样的风格,分别是BSD和UNIX。新用户经常会混淆和错误地解释这两种风格。所以要弄清楚他们,继续操作之前这里是一些基本的信息。

  注意:"ps aux"和"ps -aux"不相同。例如"-u"用来显示该用户的进程。但是"u"则是显示详细的信息。

  BSD风格:在BSD风格的语法选项前不带连字符。

  ps aux

  UNIX/LINUX的风格:在linux风格的语法选项前面有一个破折号如常。…

  ps -ef 混合使用两种Linux系统上的语法风格是好事儿。例如“ps ax -f”。但在这篇文章中,我们将主要集中在UNIX风格的语法。

  如何使用ps命令呢?

  1、显示所有进程:

  下面的命令将列出所有的进程:

  代码如下:

  $ ps ax

  $ ps -ef

  加上管道输出给less,来滚动显示

  "u"或者"-f"参数来显示所有进程的详细信息

  代码如下:

  ___FCKpd___0nbsp;ps aux

  ___FCKpd___0nbsp;ps -ef -f

  注意:为什么用户列不显示我的用户名,但显示其他用户,如root、www等,对于所有的用户名(包括你)如果长度大于8个字符,然后ps将只显示UID,而不是用户名。

  2、根据用户显示进程:

  由进程的所属用户使用“-u”选项后跟用户名来显示。多个用户名可以提供以逗号分隔。

  代码如下:

  ___FCKpd___1nbsp;ps -f -u www-data

  UID PID PPID C STIME TTY TIME CMD

  www-data 1329 1328 0 09:32 ? 00:00:00 nginx: worker process

  www-data 1330 1328 0 09:32 ? 00:00:00 nginx: worker process

  www-data 1332 1328 0 09:32 ? 00:00:00 nginx: worker process

  www-data 1377 1372 0 09:32 ? 00:00:00 php-fpm: pool a.localhost

  www-data 1378 1372 0 09:32 ? 00:00:00 php-fpm: pool a.localhost

  www-data 4524 2359 0 10:03 ? 00:00:00 /usr/sbin/apache2 -k start

  www-data 4527 2359 0 10:03 ? 00:00:00 /usr/sbin/apache2 -k start

  www-data 4528 2359 0 10:03 ? 00:00:00 /usr/sbin/apache2 -k start

  3、通过名字和进程ID显示进程:

  通过名字或命令搜索进程,使用“-C”选项后面加搜索词。

  代码如下:

  ___FCKpd___2nbsp;ps -C apache2

  PID TTY TIME CMD

  2359 ? 00:00:00 apache2

  4524 ? 00:00:00 apache2

  4525 ? 00:00:00 apache2

  ...

  4、根据CPU或者内存进行排序:

  系管理员经常希望找出那些消耗大量内存或CPU的进程。排序选项将基于特定的字段或参数让进程列表进行排序。

  “–sort”选项由逗号分隔的多个字段可以用指定。此外,该字段可以带有前缀“-”或“”符号,表示降序或升序分别排序。通过进程列表进行排序有很多参数,你可以检查手册页的完整列表。

  ___FCKpd___3nbsp;ps aux --sort=-pcpu,+pmem

  显示前5个消耗了大部分的CPU进程。

  代码如下:

  ___FCKpd___4nbsp;ps aux --sort=-pcpu | head -5

  USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

  root 1 2.6 0.7 51396 7644 ? Ss 02:02 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 23

  root 1249 2.6 3.0 355800 30896 tty1 Rsl+ 02:02 0:02 /usr/bin/X -background none :0 vt01 -nolisten tcp

  root 508 2.4 1.6 248488 16776 ? Ss 02:02 0:03 /usr/bin/python /usr/sbin/firewalld --nofork

  silver 1525 2.1 2.3 448568 24392 ? S 02:03 0:01 /usr/bin/python /usr/share/system-config-printer/applet.py

  5、用树的风格显示进程的层次关系:

  许多进程实际上是一些父进程分的分支,知道这父子进程关系往往是有用的。在'–forest'选项将建立ASCII艺术风格层次的树视图。

  下面的命令将搜索进程名字为Apache2,形成一个树结构来显示详细的信息。

  代码如下:

  ___FCKpd___5nbsp;ps -f --forest -C apache2

  UID PID PPID C STIME TTY TIME CMD

  root 2359 1 0 09:32 ? 00:00:00 /usr/sbin/apache2 -k start

  www-data 4524 2359 0 10:03 ? 00:00:00 _ /usr/sbin/apache2 -k start

  www-data 4525 2359 0 10:03 ? 00:00:00 _ /usr/sbin/apache2 -k start

  www-data 4526 2359 0 10:03 ? 00:00:00 _ /usr/sbin/apache2 -k start

  www-data 4527 2359 0 10:03 ? 00:00:00 _ /usr/sbin/apache2 -k start

  www-data 4528 2359 0 10:03 ? 00:00:00 _ /usr/sbin/apache2 -k start

  尽量不要使用任何的排序和树风格一起展示,因为他们使用了不同的顺序。

  6、显示一个父进程的子进程:

  这里有一个例子显示所有apache进程的分支

  代码如下:

  ___FCKpd___6nbsp;ps -o pid,uname,comm -C apache2

  PID USER COMMAND

  2359 root apache2

  4524 www-data apache2

  4525 www-data apache2

  4526 www-data apache2

  4527 www-data apache2

  4528 www-data apache2

  [term]

  The first process that is owned by root is the main apache2 process and all other apache2 processes have been forked out of this main process. The next command lists all child apache2 processes using the pid of the main apache2 process

  [term]

  ___FCKpd___6nbsp;ps --ppid 2359

  PID TTY TIME CMD

  4524 ? 00:00:00 apache2

  4525 ? 00:00:00 apache2

  4526 ? 00:00:00 apache2

  4527 ? 00:00:00 apache2

  4528 ? 00:00:00 apache2

  7、显示一个进程的线程:

  “-L”选项将显示进程的线程。它可以用来显示特定进程的所有线程或者所有进程。

  下面的命令将显示所有id为3150的进程所拥有的线程。

  代码如下:

  ___FCKpd___7nbsp;ps -p 3150 -L

  8、改变要显示的列:

  ps命令可以配置为只显示选中的列表。为了显示完整列表可以查看手册。

  下面的命令只显示PID,用户名,CPU,内存和命令的列。

  代码如下:

  ___FCKpd___8nbsp;ps -e -o pid,uname,pcpu,pmem,comm

  可以重命名列标签,相当的灵活。

  代码如下:

  ___FCKpd___9nbsp;ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm

  PID USERNAME CPU_USAGE %MEM COMMAND

  1 root 0.0 0.0 init

  2 root 0.0 0.0 kthreadd

  3 root 0.0 0.0 ksoftirqd/0

  4 root 0.0 0.0 kworker/0:0

  5 root 0.0 0.0 kworker/0:0H

  7 root 0.0 0.0 migration/0

  8 root 0.0 0.0 rcu_bh

  9 root 0.0 0.0 rcuob/0

  10 root 0.0 0.0 rcuob/1

  9、显示进程运行的时间:

  表示进程的运行时间。对于运行的时间,列默认情况下是不显示的,可以使用“-O”选项查看。

  代码如下:

  ___FCKpd___10nbsp;ps -e -o pid,comm,etime

  10、把ps命令变成一个实时查看器:

  像往常一样,watch命令可以用来实时捕捉ps显示进程。简单的例子如下:

  代码如下:

  ___FCKpd___11nbsp;watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'

  输出在桌面上像这样:

  代码如下:

  Every 1.0s: ps -e -o pid,uname,cmd,pmem,pcpu --... Sun Dec 1 18:16:08 2013

  PID USER CMD %MEM %CPU

  3800 1000 /opt/google/chrome/chrome - 4.6 1.4

  7492 1000 /opt/google/chrome/chrome - 2.7 1.4

  3150 1000 /opt/google/chrome/chrome 2.7 2.5

  3824 1000 /opt/google/chrome/chrome - 2.6 0.6

  3936 1000 /opt/google/chrome/chrome - 2.4 1.6

  2936 1000 /usr/bin/plasma-desktop 2.3 0.2

  9666 1000 /opt/google/chrome/chrome - 2.1 0.8

  3842 1000 /opt/google/chrome/chrome - 2.1 0.8

  4739 1000 /opt/google/chrome/chrome - 1.8 1.0

  3930 1000 /opt/google/chrome/chrome - 1.7 1.0

  3911 1000 /opt/google/chrome/chrome - 1.6 0.6

  3645 1000 /opt/google/chrome/chrome - 1.5 0.4

  3677 1000 /opt/google/chrome/chrome - 1.5 0.4

  3639 1000 /opt/google/chrome/chrome - 1.4 0.4

  输出将被刷新,每1秒刷新统计数据。不过不要以为这是类似上面。

  你会注意到在相比情况下top/htop命令的输出变化会更加频繁。

  这是因为上面输出各种各样的值,CPU使用率和内存使用情况的组合。但上述ps命令排序显示的更简单,采取的是一个时间1列(如学校数学).所以它不会像top那样快速更新。

时间: 2024-11-18 13:58:44

Linux下ps命令的10个基本例子的相关文章

Linux下ps命令详解

  Linux下ps命令详解 Linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) ps工具标识进程的5种状态码: D 不可中断 uninterr

linux下ps 命令用法总结

估计linux下常用的命令里ps算是使用率较高的了,今天来翻译一下这篇ps相关的文章 Linux ps command The ps command on linux is one of the most basic commands for viewing the processes running on the system. It provides a snapshot of the current processes along with detailed information lik

linux下uniq命令去除重复行的例子

一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个.使用uniq的时候要注意以下二点 1,对文本操作时,它一般会和sort命令进行组合使用,因为uniq 不会检查重复的行,除非它们是相邻的行.如果您想先对输入排序,使用sort -u. 2,对文本操作时,若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过 二,uniq参数说明 [zhangy@BlackGhost

Linux下PS命令详解 (转)

要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1)ps :是显示瞬间进程的状态,并不动态连续: (2)top:如果想对进程运行时间监控,应该用 top 命令: (3)kill 用于杀死进程或者给进程发送信号: (4)查看文章最后的man手册,可以查看ps的每项输出的含义,to find: STANDARD FORMAT SPECIFIERS ===================================ps 的参数说明=============

Linux下find命令实例

Linux下find命令实例 $find ~ -name "*.txt" -print #在$HOME中查.txt文件并显示 $find . -name "*.txt" -print $find . -name "[A-Z]*" -pri26nbsp; #对匹配的文件使用cpio命令,将他们备份到 磁带设备中-prune #忽略某个目录 $find . -name "[A-Z]*" -print #查以大写字母开头的文件 $f

Linux 下 Make 命令实例详解

  Linux 下 Make 命令实例详解          Linux 下 make 命令是系统管理员和程序员用的最频繁的命令之一.管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题.本文我们将用一些实例来讨论 make 命令背后的工作机制. Make 如何工作的 对于不知道背后机理的人来说,make 命令像命令行参数一样接收目标.这些目标通常存放在以 "Makefile" 来命名的特殊文件中,同时文件也包含与目标相对应的操作.更多信息,阅读关

linux下通过命令行获取gmail的新邮件

  在这篇文章中,我将为你展示 Linux 命令行的另一个漂亮干练的使用案例:访问 Google 的 Gmail 服务,有需要的小伙伴可以参考下. linux下通过命令行获取gmail的新邮件,不需输入@gmail.com部分 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 #!/bin/bash   num="33[1;36m" end="33[0m"   read -p "Enter your mail: " name rea

Linux下chkconfig命令详解(转)

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返

Linux下history命令详解---转载

Linux下History命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 . >History命令语法: [www.linuxidc.com@linux]# history [n] [www.linuxidc.com@linux]# history [-c] [www.linuxidc.com@linux]# history [-raw] histfiles 参数: n  :数字,要列出最近的 n 笔命令列表 -c :将目前的shell中的所有 history 内容全部消除 -a :将