linux(三十一)系统信息命令ps查看系统进程

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: linux(三十一)系统信息命令ps查看系统进程

Linux 查看系统进程命令ps,这个命令很重要。有点类似于windows的任务管理器的意思。


ps命令用来列出系统中当前运行的那些进程。


ps命令列出的是当前那些进程的快照。

 

就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。

 

1:参数


a  显示所有进程


-a 显示同一终端下的所有程序


-A 显示所有进程


c  显示进程的真实名称


-N 反向选择


-e 等于“-A”


e  显示环境变量


f  显示程序间的关系


-H 显示树状结构


r  显示当前终端的进程


T  显示当前终端的所有程序


u  指定用户的所有进程


-au 显示较详细的资讯


-aux 显示所有包含其他使用者的行程


-C<命令> 列出指定命令的状况


--lines<行数> 每页显示的行数


--width<字符数> 每页显示的字符数


--help 显示帮助信息


--version 显示版本显示

 

Ps的参数比较多,这里基本上就是常用的参数。

 

2:示例


(1):显示所有当前进程

[root@iZuf60ynur81p6k0ysvtneZ /]# ps -ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     1:37 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    2 ?        S      0:00 [kthreadd]
    4 ?        S<     0:00 [kworker/0:0H]
    5 ?        S      0:07 [kworker/u2:0]
    6 ?        S      0:05 [ksoftirqd/0]
    7 ?        S      0:00 [migration/0]
    8 ?        S      0:00 [rcu_bh]
    9 ?        R      2:25 [rcu_sched]
   10 ?        S<     0:00 [lru-add-drain]
   11 ?        S      0:09 [watchdog/0]
   13 ?        S      0:00 [kdevtmpfs]
   14 ?        S<     0:00 [netns]
   15 ?        S      0:00 [khungtaskd]
   16 ?        S<     0:00 [writeback]
   17 ?        S<     0:00 [kintegrityd]
 …………………………………………………………

(2):根据用户过滤进程


在需要查看特定用户进程的情况下,我们可以使用 -u 参数。比如我们要查看用户apache的进程,可以通过下面的命令:

[root@iZuf60ynur81p6k0ysvtneZ /]# ps -u apache
  PID TTY          TIME CMD
  990 ?        00:00:07 php-fpm
  991 ?        00:00:07 php-fpm
  992 ?        00:00:09 php-fpm
  993 ?        00:00:08 php-fpm
  994 ?        00:00:07 php-fpm
 1170 ?        00:00:09 php-fpm
 1202 ?        00:00:08 php-fpm

 

(3):通过cpu和内存使用来过滤进程

[root@iZuf60ynur81p6k0ysvtneZ /]# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2  51728  3956 ?        Ss   Aug12   1:37 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2  0.0  0.0      0     0 ?        S    Aug12   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<   Aug12   0:00 [kworker/0:0H]
root         5  0.0  0.0      0     0 ?        S    Aug12   0:07 [kworker/u2:0]
root         6  0.0  0.0      0     0 ?        S    Aug12   0:05 [ksoftirqd/0]
root         7  0.0  0.0      0     0 ?        S    Aug12   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    Aug12   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        R    Aug12   2:25 [rcu_sched]
…………………………………………………………

 

(4):查找具体进程


我们来查找nginx的进程

[root@iZuf60ynur81p6k0ysvtneZ /]# ps -aux | grep nginx
root      8709  0.0  0.0  46604  1208 ?        Ss   Aug14   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     8710  0.0  0.1  47600  2940 ?        S    Aug14   0:01 nginx: worker process
root     22387  0.0  0.0 112812   968 pts/0    R+   16:51   0:00 grep --color=auto nginx
**
**

(5):通过进程名和PID过滤


我们来查找nginx

[root@iZuf60ynur81p6k0ysvtneZ /]# ps -C nginx
  PID TTY          TIME CMD
 8709 ?        00:00:00 nginx
 8710 ?        00:00:01 nginx

 

我们查看详细信息:

[root@iZuf60ynur81p6k0ysvtneZ /]# ps -f -C nginx
UID        PID  PPID  C STIME TTY          TIME CMD
root      8709     1  0 Aug14 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     8710  8709  0 Aug14 ?        00:00:01 nginx: worker process

(6):根据线程来过滤进程

[root@iZuf60ynur81p6k0ysvtneZ /]#  ps -L 8710
  PID   LWP TTY      STAT   TIME COMMAND
 8710  8710 ?        S      0:01 nginx: worker process

(7):树形显示进程

[root@iZuf60ynur81p6k0ysvtneZ /]# ps -axjf
 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
    1   852   852   852 ?           -1 Ssl    995  15:56 /usr/sbin/mysqld --basedir=/usr
    1  1042  1042  1042 ?           -1 Ss       0   0:00 /usr/sbin/sshd -D
 1042 20537 20537 20537 ?           -1 Ss       0   0:00  _ sshd: root@pts/0
20537 20539 20539 20539 pts/0    24360 Ss       0   0:00      _ -bash
20539 22155 22154 20539 pts/0    24360 T        0   0:00          _ less
20539 22297 22296 20539 pts/0    24360 T        0   0:00          _ less
20539 24360 24360 20539 pts/0    24360 R+       0   0:00          _ ps -axjf
    1  8709  8709  8709 ?           -1 Ss       0   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
 8709  8710  8709  8709 ?           -1 S      997   0:01  _ nginx: worker process
    1 10039 10039 10039 ?           -1 Ssl      0  79:39 /usr/sbin/aliyun-service
    1  5599  5599  5599 ?           -1 S<sl     0   4:38 /usr/local/aegis/aegis_update/AliYunDunUpdate
    1  5644  5644  5644 ?           -1 S<sl     0  78:15 /usr/local/aegis/aegis_client/aegis_10_85/AliYunDun

进程显示树形还有另一个命令pstree

[root@iZuf60ynur81p6k0ysvtneZ /]# pstree
systemd─┬─AliYunDun───22*[{AliYunDun}]
        ├─AliYunDunUpdate───3*[{AliYunDunUpdate}]
        ├─2*[agetty]
        ├─aliyun-service───2*[{aliyun-service}]
        ├─atd
        ├─auditd───{auditd}
        ├─chronyd
        ├─crond
        ├─dbus-daemon
        ├─dhclient
        ├─mysqld───29*[{mysqld}]
        ├─nginx───nginx
        ├─php-fpm───7*[php-fpm]
        ├─polkitd───6*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───bash─┬─2*[less]
        │                    └─pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        └─tuned───4*[{tuned}]

 

(9):显示安全信息


如果想要查看现在有谁登入了你的服务器。可以使用ps命令加上相关参数:

[root@iZuf60ynur81p6k0ysvtneZ /]# ps -eo pid,user,args
  PID USER     COMMAND
  471 polkitd  /usr/lib/polkit-1/polkitd --no-debug
  472 dbus     /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
  487 root     /usr/lib/systemd/systemd-logind
  498 chrony   /usr/sbin/chronyd
  504 root     /usr/sbin/atd -f
  512 root     /usr/sbin/crond -n
  990 apache   php-fpm: pool www
  991 apache   php-fpm: pool www
  992 apache   php-fpm: pool www
  993 apache   php-fpm: pool www
  994 apache   php-fpm: pool www
 1042 root     /usr/sbin/sshd -D
 1170 apache   php-fpm: pool www
 1202 apache   php-fpm: pool www
8710 nginx    nginx: worker process

 

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

ps -aux > ps001.txt

(11):输出指定的字段

[root@iZuf60ynur81p6k0ysvtneZ /]# ps -o pid,ppid,pgrp,session,tpgid,comm
  PID  PPID  PGRP  SESS TPGID COMMAND
20539 20537 20539 20539 24823 bash
22155 20539 22154 20539 24823 less
22297 20539 22296 20539 24823 less
24602 20539 24602 20539 24823 watch
24643 20539 24643 20539 24823 watch
24823 20539 24823 20539 24823 ps

 

我这里对ps aux命令输出的每一列都代表什么解释一下:


USER:该进程是由哪个用户产生的


PD:进程的D号


%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;


%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;


VSZ:该进程占用虚拟内存的大小,单位KB;


RSS:该进程占用实际物理内存的大小,单位KB;


TTY:该进程是在哪个终端中运行的。对于CentOS来说,y1是图形化终端,


ty2-y6是本地的字符界面终端。pts/0-255代表虚拟终端。


STAT:进程状态。常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、Z:僵尸状态、S:包含子进程、1:多线程、+:前台显示


START:该进程的启动时间~


最后,这里再扩展一个查看进程树的命令:pstree,运行实例如下

root@iZijvdp1z0m5q4Z:~# pstree
systemd─┬─AliSecGuard───6*[{AliSecGuard}]
        ├─AliYunDun───25*[{AliYunDun}]
        ├─AliYunDunUpdate───5*[{AliYunDunUpdate}]
        ├─CmsGoAgent.linu─┬─exe───12*[{exe}]
        │                 └─5*[{CmsGoAgent.linu}]
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─2*[agetty]
        ├─aliyun-service───8*[{aliyun-service}]
        ├─assist_daemon───7*[{assist_daemon}]
        ├─atd
        ├─chronyd
        ├─cron───6*[cron───sh───lynx───lynx]
        ├─dbus-daemon
        ├─mysqld───62*[{mysqld}]
        ├─networkd-dispat───{networkd-dispat}
        ├─nginx───2*[nginx]
        ├─php-fpm7.3───3*[php-fpm7.3]
        ├─redis-server───3*[{redis-server}]
        ├─rsyslogd───3*[{rsyslogd}]
        ├─sshd───sshd───bash───pstree
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-network
        ├─systemd-resolve
        ├─systemd-udevd
        └─unattended-upgr───{unattended-upgr}

pstree命令将所有进程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本进程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的进程。


有好的建议,请在下方输入你的评论。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
7月前
|
监控 关系型数据库 MySQL
在CentOS系统中,如何统计哪个进程打开了文件描述符?
利用上述方法,你可以有效地监控和统计CentOS系统中的进程打开的文件描述符数量,以帮助排查错误或优化系统配置。通过组合使用各种工具和命令,可以获得对系统状态和行为的深入了解,进而做出相应的调整和
345 5
|
7月前
|
监控
ps 进程中的字段信息
该表介绍了进程管理中的关键字段,包括进程ID、用户、CPU与内存使用情况、运行时间、状态及优先级等信息,用于监控和分析系统中各进程的资源占用与运行状态。
320 10
|
Web App开发 Linux 程序员
获取和理解Linux进程以及其PID的基础知识。
总的来说,理解Linux进程及其PID需要我们明白,进程就如同汽车,负责执行任务,而PID则是独特的车牌号,为我们提供了管理的便利。知道这个,我们就可以更好地理解和操作Linux系统,甚至通过对进程的有效管理,让系统运行得更加顺畅。
363 16
|
Unix Linux
对于Linux的进程概念以及进程状态的理解和解析
现在,我们已经了解了Linux进程的基础知识和进程状态的理解了。这就像我们理解了城市中行人的行走和行为模式!希望这个形象的例子能帮助我们更好地理解这个重要的概念,并在实际应用中发挥作用。
245 20
|
11月前
|
监控 Shell Linux
Linux进程控制(详细讲解)
进程等待是系统通过调用特定的接口(如waitwaitpid)来实现的。来进行对子进程状态检测与回收的功能。
265 0
|
11月前
|
存储 负载均衡 算法
Linux2.6内核进程调度队列
本篇文章是Linux进程系列中的最后一篇文章,本来是想放在上一篇文章的结尾的,但是想了想还是单独写一篇文章吧,虽然说这部分内容是比较难的,所有一般来说是简单的提及带过的,但是为了让大家对进程有更深的理解与认识,还是看了一些别人的文章,然后学习了学习,然后对此做了总结,尽可能详细的介绍明白。最后推荐一篇文章Linux的进程优先级 NI 和 PR - 简书。
334 0
|
11月前
|
存储 Linux Shell
Linux进程概念-详细版(二)
在Linux进程概念-详细版(一)中我们解释了什么是进程,以及进程的各种状态,已经对进程有了一定的认识,那么这篇文章将会继续补全上篇文章剩余没有说到的,进程优先级,环境变量,程序地址空间,进程地址空间,以及调度队列。
216 0
|
11月前
|
Linux 调度 C语言
Linux进程概念-详细版(一)
子进程与父进程代码共享,其子进程直接用父进程的代码,其自己本身无代码,所以子进程无法改动代码,平时所说的修改是修改的数据。为什么要创建子进程:为了让其父子进程执行不同的代码块。子进程的数据相对于父进程是会进行写时拷贝(COW)。
273 0
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数