发布:10 basic examples of Linux ps command

This commit is contained in:
wxy 2013-12-10 16:24:02 +08:00
parent 8dd2a69cea
commit bbac0e05f5

View File

@ -2,25 +2,25 @@ ps命令的10个例子
================================================================================
### Linux ps 命令 ###
linux的ps命令是一个浏览系统运行的进程的一个最基础的工具。它提供了一个当前进程的快照还带有一些具体的信息比如用户idcpu使用率内存使用命令名等它不会像top或者htop一样实时显示数据。虽然它在功能和输出上更加简单但它仍然是每个linux新手需要了解和学好的必要进程管理/检测工具。
linux的ps命令是一个查看系统运行的进程的一个最基础的工具。它提供了一个当前进程的快照还带有一些具体的信息比如用户idcpu使用率内存使用命令名等它不会像top或者htop一样实时显示数据。虽然它在功能和输出上更加简单但它仍然是每个linux新手需要了解和学好的必要进程管理/检测工具。
在本篇中,我门会复习ps命令基本的用法:检测、过滤、以不同的方式排序进程来更好地适应
在本篇中,我们会学习ps命令基本的用法查找、过滤以不同的方式排序
### 语法说明 ###
ps命令有两种不同风格的语法规则。它们是BSD和UNIX。Linux新手经常感到困惑并会误解这两种风格。所以在继续下一步之前,我们来弄清楚一些基本的信息。
ps命令有两种不同风格的语法规则BSD风格和UNIX风格。Linux新手经常感到困惑并会误解这两种风格所以在继续下一步之前,我们来弄清楚一些基本的信息。
> 注意: "ps aux"不等同于"ps -aux"。比如"-u"用于显示用户的进程,但是"u"意味着显示具体信息。
BSD 形式 - BSD形式的语法的选项前没有破折号
BSD 形式 - BSD形式的语法的选项前没有破折号,如:
ps aux
UNIX/LINUX 形式 - linux形式的语法的选项前有破折号
UNIX/LINUX 形式 - linux形式的语法的选项前有破折号,如:
ps -ef
> 在linux系统上混合这两种语法是可以的。比如 "ps ax -f"。但是本章中我们主要讨论unix形式语法。
> 在linux系统上混合这两种语法是可以的。比如 "ps ax -f"。但是本章中我们主要讨论UNIX形式语法。
### 如何使用ps命令 ###
@ -31,16 +31,15 @@ UNIX/LINUX 形式 - linux形式的语法的选项前有破折号。
$ ps ax
$ ps -ef
通过管道输出到"less"可以使它滚动
通过管道输出到"less"可以分页
使用"u"或者"-f"选项可以显示进程的具体信息。
$ ps aux
$ ps -ef -f
> 为什么USER列显示的不是我的用户名而是其他的像rootwww-data等等
对于所有的用户(包括你们的)如果长度大于8个字符那么ps只会显示你的UID而不是用户名。
> 为什么USER列显示的不是我的用户名但是其他的像rootwww-data等却显示
> 对于所有的用户(包括你们的)如果长度大于8个字符那么ps只会显示你的UID而不是用户名。
#### 2. 显示用户进程 ####
@ -68,9 +67,9 @@ UNIX/LINUX 形式 - linux形式的语法的选项前有破折号。
4525 ? 00:00:00 apache2
...
要通过进程id显示进程就使用"-p"选项,并且它还提供使用逗号来分割进程id。
要通过进程id显示进程就使用"-p"选项,并且还可以通过逗号分隔来指定多个进程id。
$ ps -f -p 3150,7298,6544
$ ps -f -p 3150,7298,6544
"-C"必须提供精确的进程名并且它并不能通过部分名字或者通配符查找。为了更灵活地搜索进程列表通常使用grep命令。
@ -78,10 +77,9 @@ UNIX/LINUX 形式 - linux形式的语法的选项前有破折号。
#### 4. 通过cpu或者内存使用排序进程 ####
系统管理员通常想要找出那些消耗最多内存或者CPU的进程。排序选项会基于特性的字段或者参数排序进程列表。
多个字段可以用'--sort'指定,并用逗号分割。除此之外,字段前面还可以跟上'-'或者'+'的前缀来相应地表示递减和递增排序。这里有很多的用于排序的选项。通过man页来获取完整的列表。
系统管理员通常想要找出那些消耗最多内存或者CPU的进程。排序选项会基于特定的字段或者参数来排序进程列表。
可以用'--sort'指定多个字段,并用逗号分割。除此之外,字段前面还可以跟上'-'或者'+'的前缀来相应地表示递减和递增排序。这里有很多的用于排序的选项通过man页来获取完整的列表。
$ ps aux --sort=-pcpu,+pmem
@ -109,7 +107,7 @@ UNIX/LINUX 形式 - linux形式的语法的选项前有破折号。
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. 显示父进程的子进程 ####
@ -123,11 +121,9 @@ UNIX/LINUX 形式 - linux形式的语法的选项前有破折号。
4526 www-data apache2
4527 www-data apache2
4528 www-data apache2
[term]
第一个属于root的进程是apache2的主进程其他的apache进程都是从主进程fork出来的。下面的命令使用apache2主进程的pid列出了所有的apache2的子进程。
第一个属于root的进程是apache2的主进程其他的apache进程都是从主进程fork出来的。下面的命令使用apache2主进程的pid列出了所有的apache2的子进程。
[term]
$ ps --ppid 2359
PID TTY TIME CMD
4524 ? 00:00:00 apache2
@ -138,7 +134,7 @@ UNIX/LINUX 形式 - linux形式的语法的选项前有破折号。
#### 7. 显示进程的线程 ####
"-L"选项会随着进程一起显示线程。它可用于显示所有定进程或者所有进程的线程。
"-L"选项会随着进程一起显示线程。它可用于显示所有定进程或者所有进程的线程。
下面的命令会显示进程id为3150的进程的所有线程。
@ -146,7 +142,7 @@ UNIX/LINUX 形式 - linux形式的语法的选项前有破折号。
#### 8. 改变显示的列 ####
ps命令可以被配置用来只显示被选中的列。很多列可以被用来显示并且完整的列表在man页中
ps命令可以被配置用来只显示被选中的列。很多列可以被用来显示完整的列表可以查看man页
下面的命令会只显示pid、用户名、cpu、内存、命令列。
@ -176,7 +172,6 @@ ps命令可以被配置用来只显示被选中的列。很多列可以被用来
#### 10. 将ps转换为实时进程查看器 ####
As usual, the watch command can be used to turn ps into a realtime process reporter. Simple example is like this
通常上watch命令可将ps命令变成实时进程查看器。像这个简单的命令
$ watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'
@ -201,11 +196,9 @@ As usual, the watch command can be used to turn ps into a realtime process repor
3677 1000 /opt/google/chrome/chrome - 1.5 0.4
3639 1000 /opt/google/chrome/chrome - 1.4 0.4
输出会每秒刷新状态。但不要认为这和top相似
输出会每秒刷新状态但是这其实很top不同。你会发现top/htop命令的输出相比上面的ps命令刷新得更频繁
你会发现top/htop命令的输出相比上面的ps命令刷新得更频繁。
这是因为top输出是结合了cup使用值和内存使用值后的排序值。但是上面的ps命令是一个更简单的行为的排序每次获取一列(像学校的数学)。因此它不会像top那样快速更新。
这是因为top输出是结合了cup使用值和内存使用值后的排序值。但是上面的ps命令是一个更简单的行为的排序每次获取一列(像学校的数学)因此它不会像top那样快速更新。
--------------------------------------------------------------------------------