Linux命令之ps(17)

ps命令常用于:
1、显示所有进程信息
2、显示指定用户相关进程信息
3、显示所有进程信息,连带命令行
4、ps 与grep 常用组合用法,查找特定进程
5、搭配kill指令随时中断、删除不必要的程序

1、功能说明

用于显示当前系统的进程状态

2、语法格式

ps [选项]

3、选项解释

 a   显示所有程序,包括其他用户的程序
 -a  显示所有终端机下执行的程序
 -A  显示所有程序
 c   显示每个程序真正的指令名称
 -c  显示CLS和PRI栏位。
 -C<指令名称>  指定执行指令的名称,并列出该指令的程序的状况。
 e   显示环境变量
 -e  显示所有进程
 f   显示程序间的关系
 -f  显示UID,PPIP,C与STIME栏位
 -H  显示树状结构
 r   显示当前终端的进程
 T   显示当前终端的所有程序
 -l  采用详细的格式来显示程序状况
 L   列出栏位的相关信息
 -o  显示与指定关键字的空格或逗号分隔列表相关的信息。多个关键字也可以以多个-o选项的形式给出
 u   显示进程的用户信息
 -u  显示指定用户相关的进程信息
 -x  显示没有控制终端的进程,同时显示各个命令的具体路径
 x   显示与终端无关的所有进程 
 -au    显示较详细的资讯
 -aux   显示所有包含其他使用者的行程
 -ef    显示所有进程信息,连同命令行
 ...

4、参考实例

  • 显示所有进程信息
ps -A
  • 显示指定用户信息
[root@xiaonong ~]$ ps -u root
PID TTY      TIME CMD
1   ?        04:17:59 systemd
2   ?        00:00:47 kthreadd
4   ?        00:00:00 kworker/0:0H
6   ?        01:28:46 ksoftirqd/0
7   ?        00:02:44 migration/0
8   ?        00:00:00 rcu_bh
9   ?        1-09:22:01 rcu_sched
  • 显示所有进程信息,连同命令行
ps -ef   
当数量过多时,可搭配more分页
  • 查看特定进程
ps -ef | grep java
ps -aux | grep java
  • 通过名字或命令搜索进程
[root@xiaonong ~]$ ps -C nginx
PID  TTY       TIME CMD
3100  ?        00:03:17 nginx
8008  ?        00:36:25 nginx
20745 ?        00:57:37 nginx
25055 ?        00:00:01 nginx
31771 ?        02:01:10 nginx
  • 输出指定的字段
[root@xiaonong ~]$ ps -o pid,ppid,pgrp,session,user,time
PID  PPID  PGRP  SESS USER         TIME
21931 21930 21931 21931 root   00:00:00
29137 21931 29137 21931 root   00:00:00
29138 21931 29137 21931 root   00:00:00
  • 把所有进程显示出来,并输出到test.txt文件
ps -aux > test.txt
  • 查看线程数
[root@xiaonong ~]$ ps -efL
UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
root         1     0     1  0    1  2020 ?        04:17:59 /usr/lib/systemd/systemd --system --deserialize 21
root         2     0     2  0    1  2020 ?        00:00:47 [kthreadd]
root         4     2     4  0    1  2020 ?        00:00:00 [kworker/0:0H]
root         6     2     6  0    1  2020 ?        01:28:46 [ksoftirqd/0]
root         7     2     7  0    1  2020 ?        00:02:44 [migration/0]

5、拓展命令

1、杀死特定程序
  ps -aux | grep java | awk '{print $2}' | xargs kill -9

2、查看cpu占用率前5的进程
  ps -aux --sort=-pcpu|head -5

3、CPU或者内存进行排序,-降序,+升序
  ps aux --sort=-pcpu,+pmem

4、通过进程id获取服务名称
  ps -o command -p 88888 | sed -n 2p

5、按内存资源的使用量对进程进行排序
  ps aux | sort -rnk 4
  ps -e -o "%C : %p :%z : %a"|sort -k5 -nr

6、查看进程的PID、名称以及CPU 占用率
  ps axo pid,comm,pcpu

7、找出与job、job2服务有关的PID号码
  ps aux | egrep '(job|job2)'

8、显示一个父进程的子进程
  ps -o pid,uname,comm -C nginx

6、补充说明

UID    此进程的拥有者
PID    进程的标识号
PPID   进程的父进程的标识号
C      CPU使用的资源百分比
STIME  进程开始的时间
TTY    该进程是在哪个终端上运作,与终端无关的显示问号"?"
TMIE   进程使用CPU总的时间
CMD    正在执行的命令行
USER   该进程所属用户
%CPU   该进程所用掉的CPU资源百分比
%MEM   该进程所占用的物理内存百分比
VSZ    该进程使用掉的虚拟内存量 (Kbytes)
RSS    该进程占用的固定的内存量 (Kbytes)
STAT   进程目前的状态:
  R  正在运行或者是可被运行
  S  该程序目前正在睡眠当中,但可被某些讯号 (signal) 唤醒
  D  不可中断睡眠
  T  正在侦查或者是停止了
  Z  僵尸进程
  <  优先级高的进程
  N  优先级较低的进程
  L  有些页被锁进内存
  s  进程的领导者
  l  多线程进程
  +  位于后台的进程组
START  该进程被触发启动的时间

你可能感兴趣的:(Linux命令之ps(17))