0


【Linux 】 ps命令详解,查看进程pid

文章目录

1. ps概述

ps 命令是最常用的监控进程的命令,通过此命令可以查看系统中所有运行进程的详细信息。

ps 命令有多种不同的使用方法,这常常给初学者带来困惑。在各种 Linux 论坛上,询问 ps 命令语法的帖子屡见不鲜,而出现这样的情况,还要归咎于 UNIX 悠久的历史和庞大的派系。在不同的 Linux 发行版上,ps 命令的语法各不相同,为此,Linux 采取了一个折中的方法,即融合各种不同的风格,兼顾那些已经习惯了其它系统上使用 ps 命令的用户。

2. ps语法

ps 命令的基本格式如下:

#查看系统中所有的进程,使用 BS 操作系统格式
[root@localhost ~]# ps aux

#查看系统中所有的进程,使用 Linux 标准命令格式
[root@localhost ~]# ps -les

选项:

  • a:显示一个终端的所有进程,除会话引线外;
  • u:显示进程的归属用户及内存的使用情况;
  • x:显示没有控制终端的进程;
  • -l:长格式显示更加详细的信息;
  • -e:显示所有进程;
  • -f 完整格式显示

可以看到,ps 命令有些与众不同,它的部分选项不能加入"-“,比如命令"ps aux”,其中"aux"是选项,但是前面不能带“-”。

大家如果执行 “man ps” 命令,则会发现 ps 命令的帮助为了适应不同的类 UNIX 系统,可用格式非常多,不方便记忆。所以,我建议大家

记忆几个固定选项即可

。比如:

  • “ps aux” 可以查看系统中所有的进程;
  • “ps -le” 可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级;
  • “ps -ef” 同le相似
  • “ps -l” 只能看到当前 Shell 产生的进程;

有这三个命令就足够了,下面分别来查看。

【例 1】ps aux

[root@localhost ~]# ps aux
#查看系统中所有的进程
[root@EMS3 ~]# ps aux|head -n  10
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         10.00.01919325000?        Ss    202246:32/usr/lib/systemd/systemd --switched-root --system --deserialize 21
root         20.00.000?        S     20220:04[kthreadd]
root         30.00.000?        S     20224:19[ksoftirqd/0]
root         50.00.000?        S     20220:00[kworker/0:0H]
root         70.00.000?        S     20220:48[migration/0]
root        100.00.000?        S<20220:00[lru-add-drain]
root        110.00.000?        S     20220:15[watchdog/0]
…省略部分输出…

或使用 ps aux |head -n 10 只展示前10,条记录,方便查看列头含义

在这里插入图片描述

【例2 】 ps -ef

[root@EMS3 ~]# ps -ef|head -n  10
UID        PID  PPID  C STIME TTY          TIME CMD
root         1002022?00:46:32/usr/lib/systemd/systemd --switched-root --system --deserialize 21
root         2002022?00:00:04[kthreadd]
root         3202022?00:04:19[ksoftirqd/0]
root         5202022?00:00:00[kworker/0:0H]
root         7202022?00:00:48[migration/0]
root        10202022?00:00:00[lru-add-drain]
root        11202022?00:00:15[watchdog/0]

【例3 】 ps -le
"ps aux"命令可以看到系统中所有的进程,"ps -le"命令也能看到系统中所有的进程。由于 “-l” 选项的作用,所以 “ps -le” 命令能够看到更加详细的信息,比如父进程的 PID、优先级等。但是这两个命令的基本作用是一致的,掌握其中一个就足够了。

[root@localhost ~]# ps -le
[root@EMS3 ~]# ps -le|head -n  10
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0100800-47983 ep_pol ?00:46:32 systemd
1 S     0200800-0 kthrea ?00:00:04 kthreadd
1 S     0320800-0 smpboo ?00:04:19 ksoftirqd/05 S     0520800-0 worker ?00:00:00 kworker/0:0H
1 S     0720-40--0 smpboo ?00:00:48 migration/01 S     0820800-0 rcu_gp ?00:00:00 rcu_bh
1 S     0920800-0 rcu_gp ?00:58:12 rcu_sched
5 S     0102060-20-0 rescue ?00:00:00 lru-add-drain
5 S     01120-40--0 smpboo ?00:00:15 watchdog/0
…省略部分输出…

或使用

ps -ef |head -n 10

只展示前10,条记录,方便查看列头含义
在这里插入图片描述
【例 4】如果不想看到所有的进程,只想查看一下当前登录产生了哪些进程,那只需使用 “ps -l” 命令就足够了:

[root@localhost ~]# ps -l
#查看当前登录产生的进程
F S UID   PID  PPID C PRI NI ADDR SZ WCHAN TTY       TIME CMD
4 S 018618186140800-1681-     pts/100:00:00 bash
4 R 018683186184800-1619-     pts/100:00:00 ps

可以看到,这次从 pts/1 虚拟终端登录,只产生了两个进程:一个是登录之后生成的 Shell,也就是 bash;另一个是正在执行的 ps 命令。

我们再来说说僵尸进程。僵尸进程的产生一般是由于进程非正常停止或程序编写错误,导致子进程先于父进程结束,而父进程又没有正确地回收子进程,从而造成子进程一直存在于内存当中,这就是僵尸进程。

僵尸进程会对主机的稳定性产生影响,所以,在产生僵尸进程后,一定要对产生僵尸进程的软件进行优化,避免一直产生僵尸进程;对于已经产生的僵尸进程,可以在查找出来之后强制中止。

3. 指定pid进行查看

格式 :
ps -p xxx
ps -p xxx -f 更详细的信息

4. 查看进程启动路径

#查看tomcat进程
ps -ef | grep tomcat

单个进程启动之后会在 /proc下面有一个pid对应的路径
如PID为1521,到

/proc/1521

下,

ls -l

会看到类似如下信息:

-r--r--r--    1 oracle   oinstall        0 12月 29 18:58 cmdline
lrwxrwxrwx    1 oracle   oinstall        0 12月 29 18:58 cwd -> /XXX/ultserver_aa
-r--------    1 oracle   oinstall        0 12月 29 18:58 environ

cwd就是要查找的进程所在路径

标签: linux unix ps

本文转载自: https://blog.csdn.net/m0_45406092/article/details/130661189
版权归原作者 云川之下 所有, 如有侵权,请联系我们删除。

“【Linux 】 ps命令详解,查看进程pid”的评论:

还没有评论