Linux命令-ps pgrep pstree

ps命令

Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
语法

ps [参数]

参数

-a  显示所有终端机下执行的进程,除了阶段作业领导者之外。
a   显示现行终端机下的所有进程,包括其他用户的进程。
-A  显示所有进程。
-c  显示CLS和PRI栏位。
c   列出进程时,显示每个进程真正的指令名称,而不包含路径,参数或常驻服务的标示。
-C<指令名称>    指定执行指令的名称,并列出该指令的进程的状况。
-d  显示所有进程,但不包括阶段作业领导者的进程。
-e  此参数的效果和指定"A"参数相同。
e   列出进程时,显示每个进程所使用的环境变量。
-f  显示UID,PPIP,C与STIME栏位。
f   用ASCII字符显示树状结构,表达进程间的相互关系。
-g<群组名称>    此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定。
g   显示现行终端机下的所有进程,包括群组领导者的进程。
-G<群组识别码>  列出属于该群组的进程的状况,也可使用群组名称来指定。
h   不显示标题列。
-H  显示树状结构,表示进程间的相互关系。
-j或j   采用工作控制的格式显示进程状况。
-l或l   采用详细的格式来显示进程状况。
L   列出栏位的相关信息。
-m或m   显示所有的执行绪。
n   以数字来表示USER和WCHAN栏位。
-N  显示所有的进程,除了执行ps指令终端机下的进程之外。
-p<进程识别码>  指定进程识别码,并列出该进程的状况。
p<进程识别码>   此参数的效果和指定"-p"参数相同,只在列表格式方面稍有差异。
r   只列出现行终端机正在执行中的进程。
-s<阶段作业>    指定阶段作业的进程识别码,并列出隶属该阶段作业的进程的状况。
s   采用进程信号的格式显示进程状况。
S   列出进程时,包括已中断的子进程资料。
-t<终端机编号>  指定终端机编号,并列出属于该终端机的进程的状况。
t<终端机编号>   此参数的效果和指定"-t"参数相同,只在列表格式方面稍有差异。
-T  显示现行终端机下的所有进程。
-u<用户识别码>  此参数的效果和指定"-U"参数相同。
u   以用户为主的格式来显示进程状况。
-U<用户识别码>  列出属于该用户的进程的状况,也可使用用户名称来指定。
U<用户名称> 列出属于该用户的进程的状况。
v   采用虚拟内存的格式显示进程状况。
-V或V   显示版本信息。
-w或w   采用宽阔的格式来显示进程状况。 
x   显示所有进程,不以终端机来区分。
X   采用旧式的Linux i386登陆格式显示进程状况。
-y  配合参数"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位。

常用组合

  • ps -ef
  • ps aux 或 ps -aux
  • ps auxc 或 ps -auxc
  • ps axjf 或 ps -axjf
  • ps axjfc 或 ps -axjfc

实例

  • ps -ef
    [root@hzj ~]# ps -ef
    UID        PID  PPID  C STIME TTY          TIME CMD
    root      6679  0.0  0.1 208708  3184 ?        Sl   Sep03   0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-por
    root      6684  0.0  0.2 108744  3992 ?        Sl   Sep03   0:20 containerd-shim -namespace moby -workdir /var/lib/container
    polkitd   6700  0.1  0.2  48444  4000 ?        Ssl  Sep03  22:42 redis-server *:6379
    root      6772  0.0  0.0  15232  1604 pts/0    Ss+  Sep03   0:00 redis-cli
    root     17928  0.0  2.2 499928 42048 ?        Ssl  Aug22  25:45 /usr/bin/containerd
    root     17929  0.0  4.0 793492 76964 ?        Ssl  Aug22   6:27 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/cont
    root     18445  0.0  0.6 208708 11732 ?        Sl   Aug22   0:01 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-por
    root     18450  0.0  0.5 108744  9432 ?        Sl   Aug22   0:50 containerd-shim -namespace moby -workdir /var/lib/container
    polkitd  18466  0.0 11.6 1145884 218732 ?      Ssl  Aug22  16:38 mysqld
    root     22206  0.0  0.1  32868  2740 ?        S+   Sep12   0:00 mysql -uroot -p
    root     23927  0.0  0.0      0     0 ?        S    11:15   0:00 [kworker/0:2]
    root     23933  0.0  0.0      0     0 ?        S    11:20   0:00 [kworker/0:0]
    root     23949  0.0  0.0      0     0 ?        R    11:25   0:00 [kworker/0:1]
    root     23951  0.0  0.1 155360  1888 pts/1    R+   11:28   0:00 ps aux
    root     32602  0.0  0.2  32528  4216 ?        S<sl Aug31   6:11 /usr/local/aegis/aegis_update/AliYunDunUpdate
    root     32647  1.7  0.6 128600 12080 ?        S<sl Aug31 333:46 /usr/local/aegis/aegis_client/aegis_10_73/AliYunDun
    
    其中各列的内容意思如下
    UID    //用户ID、但输出的是用户名 
    PID    //进程的ID 
    PPID    //父进程ID 
    C      //进程占用CPU的百分比 
    STIME  //进程启动到现在的时间 
    TTY    //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。 
    CMD    //命令的名称和参数
    
    • ps aux
    [root@hzj ~]# ps aux
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.2 125472  3924 ?        Ss   Aug20   0:25 /usr/lib/systemd/systemd --switched-root --system --deseria
    root         2  0.0  0.0      0     0 ?        S    Aug20   0:00 [kthreadd]
    root         3  0.0  0.0      0     0 ?        S    Aug20   0:03 [ksoftirqd/0]
    root         5  0.0  0.0      0     0 ?        S<   Aug20   0:00 [kworker/0:0H]
    root         7  0.0  0.0      0     0 ?        S    Aug20   0:00 [migration/0]
    root         8  0.0  0.0      0     0 ?        S    Aug20   0:00 [rcu_bh]
    root         9  0.0  0.0      0     0 ?        R    Aug20   3:54 [rcu_sched]
    root        10  0.0  0.0      0     0 ?        S<   Aug20   0:00 [lru-add-drain]
    root        11  0.0  0.0      0     0 ?        S    Aug20   0:08 [watchdog/0]
    root        13  0.0  0.0      0     0 ?        S    Aug20   0:00 [kdevtmpfs]
    
    
    其中各列的内容意思如下
    USER      //用户名 
    %CPU      //进程占用的CPU百分比 
    %MEM      //占用内存的百分比 
    VSZ      //该进程使用的虚拟內存量(KB) 
    RSS      //该进程占用的固定內存量(KB)(驻留中页的数量) 
    STAT      //进程的状态 
    START    //该进程被触发启动时间 
    TIME      //该进程实际使用CPU运行的时间
    
    其中STAT状态位常见的状态字符有
    D      //无法中断的休眠状态(通常 IO 的进程); 
    R      //正在运行可中在队列中可过行的; 
    S      //处于休眠状态; 
    T      //停止或被追踪; 
    W      //进入内存交换 (从内核2.6开始无效); 
    X      //死掉的进程 (基本很少见); 
    Z      //僵尸进程; 
    <      //优先级高的进程 
    N      //优先级较低的进程 
    L      //有些页被锁进内存; 
    s      //进程的领导者(在它之下有子进程); 
    l      //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads); 
    +      //位于后台的进程组;
    
  • 输出指定的字段
    ps -o pid,ppid,pgrp,session,tpgid,comm
    

pgrep

pgrep是linux中常用的通过程序名字来查询进程的命令。

语法

pgrep(选项)(参数) 

选项

-o:仅显示找到的最小(起始)进程号; 
-n:仅显示找到的最大(结束)进程号; 
-l:显示进程名称; 
-P:指定父进程号; 
-g:指定进程组; 
-t:指定开启进程的终端; 
-u:指定进程的有效用户ID。 

注:进程号越大,并不一定意味着进程的启动时间越晚

参数
进程名称:指定要查找的进程名称,同时也支持类似grep指令中的匹配模式。

实例

  • 显示进程号
[root@hzj ~]# pgrep redis
6700
6772
  • 显示进程名称包含字符串redis的所有进程
[root@hzj ~]# pgrep  -l redis
6700 redis-server
6772 redis-cli
  • 显示进程号最小(起始)的进程
[root@hzj ~]# pgrep -ol redis
6700 redis-server
  • 显示进程号最大(终止)的进程
[root@hzj ~]# pgrep -nl redis
6772 redis-cli

pstree

pstree命令更优雅的树状显示
pstree命令以树状图显示进程间的关系(display a tree of processes)。ps命令可以显示当前正在运行的那些进程的信息,但是对于它们之间的关系却显示得不够清晰。在Linux系统中,系统调用fork可以创建子进程,通过子shell也可以创建子进程,Linux系统中进程之间的关系天生就是一棵树,树的根就是进程PID为1的init进程。

  • 以树状图只显示进程的名字,且相同进程合并显示
pstree
  • 以树状图显示进程同时还显示PID:
pstree -p
  • 以树状图显示进程PID为XXX的进程以及子孙进程,如果有-p参数则同时显示每个进程的PID
pstree [-p] <pid>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要查看进程的 PID(进程 ID),可以使用 Linux 中的 `ps` 命令。具体命令如下: ``` ps aux | grep 进程名 ``` 其中,`aux` 是选项,用于显示所有用户的所有进程。`grep` 命令用于过滤出包含进程名的行。最终的输出结果将会显示该进程的 PID 和其他详细信息。 ### 回答2: 要查看Linux进程的PID(进程标识号),可以使用以下命令: 1. ps命令:可以使用"ps -eo pid,ppid,cmd"命令查看所有进程的PID,父进程的PID和命令行。其中,pid表示进程的PID,ppid表示父进程的PID,cmd表示进程的命令行。 2. pgrep命令:可以使用"pgrep <进程名称>"命令查找匹配的进程名称,并返回进程的PID。 3. top命令:通过运行"top"命令,可以实时查看当前运行的进程列表,其中包括每个进程的PID、CPU使用率、内存使用量等信息。 4. htop命令:htop是一个更加交互式和功能强大的任务管理器,可以通过运行"htop"命令来查看进程的PID和其他相关信息。它提供了更直观的界面和更多的选项供用户进行交互。 5. pstree命令:可以使用"pstree"命令来查看进程之间的关系,并显示每个进程的PID。 总结:Linux中查看PID的命令ps、pgrep、top、htop和pstree等,可以根据具体需求选择不同的命令来查看进程的PID和其他相关信息。 ### 回答3: 在Linux中,我们可以使用多种命令来查看进程的PID(Process ID)。 一种常用的命令ps命令。通过输入"ps"命令,我们可以列出当前系统中正在运行的进程。默认情况下,ps命令会显示进程的PID以及其他相关的信息,如进程所属用户、CPU使用率等。如果只想查看PID,可以使用"ps -e -o pid"命令。其中,“-e”选项表示列出所有进程,“-o pid”选项表示只显示进程的PID。 另一个常用的命令是top命令。输入"top"命令后,我们可以动态地监视并查看系统中正在运行的进程。默认情况下,top命令会显示进程的PID、进程名、所属用户、CPU使用率等信息。如果只想查看PID,可以按下“F”键,然后输入“f”选项,再选择“PID”项进行显示。 除了ps和top命令,还有其他一些命令也可以用来查看进程的PID。例如,使用"pgrep"命令可以根据进程名或者其他条件来查找进程,并显示其PID。使用"pidof"命令可以根据进程名来查找进程,并显示其PID。 总之,在Linux中,有多种命令可以用来查看进程的PID,我们可以根据自己的需求选择合适的命令来使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值