首页 运维 正文
Linux下10个ps命令的基本例子

 2022-10-23    393  

Linux ps命令

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

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

语法注意:

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

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

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

psaux

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

ps-ef

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

如何使用ps命令呢?

1、显示所有进程:

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

$psax
$ps-ef

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

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

$psaux
$ps-ef-f

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

2、根据用户显示进程:

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

$ps-f-uwww-data
UIDPIDPPIDCSTIMETTYTIMECMD
www-data13291328009:32?00:00:00nginx:workerprocess
www-data13301328009:32?00:00:00nginx:workerprocess
www-data13321328009:32?00:00:00nginx:workerprocess
www-data13771372009:32?00:00:00php-fpm:poola.localhost
www-data13781372009:32?00:00:00php-fpm:poola.localhost
www-data45242359010:03?00:00:00/usr/sbin/apache2-kstart
www-data45272359010:03?00:00:00/usr/sbin/apache2-kstart
www-data45282359010:03?00:00:00/usr/sbin/apache2-kstart

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

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

$ps-Capache2
PIDTTYTIMECMD
2359?00:00:00apache2
4524?00:00:00apache2
4525?00:00:00apache2
...

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

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

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

$psaux--sort=-pcpu,+pmem

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

$psaux--sort=-pcpu|head-5
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
root12.60.7513967644?Ss02:020:03/usr/lib/systemd/systemd--switched-root--system--deserialize23
root12492.63.035580030896tty1Rsl+02:020:02/usr/bin/X-backgroundnone:0vt01-nolistentcp
root5082.41.624848816776?Ss02:020:03/usr/bin/python/usr/sbin/firewalld--nofork
silver15252.12.344856824392?S02:030:01/usr/bin/python/usr/share/system-config-printer/applet.py

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

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

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

$ps-f--forest-Capache2
UIDPIDPPIDCSTIMETTYTIMECMD
root23591009:32?00:00:00/usr/sbin/apache2-kstart
www-data45242359010:03?00:00:00\_/usr/sbin/apache2-kstart
www-data45252359010:03?00:00:00\_/usr/sbin/apache2-kstart
www-data45262359010:03?00:00:00\_/usr/sbin/apache2-kstart
www-data45272359010:03?00:00:00\_/usr/sbin/apache2-kstart
www-data45282359010:03?00:00:00\_/usr/sbin/apache2-kstart

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

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

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

$ps-opid,uname,comm-Capache2
PIDUSERCOMMAND
2359rootapache2
4524www-dataapache2
4525www-dataapache2
4526www-dataapache2
4527www-dataapache2
4528www-dataapache2
[term]
Thefirstprocessthatisownedbyrootisthemainapache2processandallotherapache2processeshavebeenforkedoutofthismainprocess.Thenextcommandlistsallchildapache2processesusingthepidofthemainapache2process
[term]
$ps--ppid2359
PIDTTYTIMECMD
4524?00:00:00apache2
4525?00:00:00apache2
4526?00:00:00apache2
4527?00:00:00apache2
4528?00:00:00apache2

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

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

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

$ps-p3150-L

8、改变要显示的列:

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

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

$ps-e-opid,uname,pcpu,pmem,comm

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

$ps-e-opid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm
PIDUSERNAMECPU_USAGE%MEMCOMMAND
1root0.00.0init
2root0.00.0kthreadd
3root0.00.0ksoftirqd/0
4root0.00.0kworker/0:0
5root0.00.0kworker/0:0H
7root0.00.0migration/0
8root0.00.0rcu_bh
9root0.00.0rcuob/0
10root0.00.0rcuob/1

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

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

$ps-e-opid,comm,etime

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

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

$watch-n1'ps-e-opid,uname,cmd,pmem,pcpu--sort=-pmem,-pcpu|head-15'

输出在桌面上像这样:

Every1.0s:ps-e-opid,uname,cmd,pmem,pcpu--...SunDec118:16:082013
PIDUSERCMD%MEM%CPU
38001000/opt/google/chrome/chrome-4.61.4
74921000/opt/google/chrome/chrome-2.71.4
31501000/opt/google/chrome/chrome2.72.5
38241000/opt/google/chrome/chrome-2.60.6
39361000/opt/google/chrome/chrome-2.41.6
29361000/usr/bin/plasma-desktop2.30.2
96661000/opt/google/chrome/chrome-2.10.8
38421000/opt/google/chrome/chrome-2.10.8
47391000/opt/google/chrome/chrome-1.81.0
39301000/opt/google/chrome/chrome-1.71.0
39111000/opt/google/chrome/chrome-1.60.6
36451000/opt/google/chrome/chrome-1.50.4
36771000/opt/google/chrome/chrome-1.50.4
36391000/opt/google/chrome/chrome-1.40.4

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

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

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

原文链接:https://77isp.com/post/8928.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。