Linux命令:ps

ps - report a snapshot of the current processes

对于 ps 命令来说参数多是一回事,另一回事是 ps 支持三种不通类型的命令行参数。

  • Unix 风格的参数:前面加上单破折线。
  • BSD 风格的参数:前面不加破折线。
  • GNU 风格的参数:前面加上双破折线。

不带任何参数的 ps

ps 命令用于显示系统中进程的信息,包括进程的ID、控制进程的终端、执行时间和命令等,选项很多,ps命令显示的是当前相关进程的快照是当前系统进程运行时候的情况,如果要动态查询进程就要使用 top 来查询。

进程是程序在一个数据集合上的一次具体执行过程,每一个进程都有一个独立的进程号也就是 PID,PID 全称是 Process ID

从 RHEL7 开始引入了 systemd 来充当系统的第一个进程,早期使用的是 init 来充当第一个进程,第一个进程是所有进程的父进程。


默认使用 ps 不带任何参数时,显示的是当前控制台下属于当前用户的进程。
具体显示的是 程序的进程 PID、运行的终端、运行的时间、进程已用CPU的时间。

[root@server ~]# ps
    PID TTY          TIME CMD
  14947 pts/0    00:00:00 bash
  15602 pts/0    00:00:00 ps


[root@server ~]# ping 8.8.8.8 > /dev/null &
[1] 16290

[root@server ~]# ps
    PID TTY          TIME CMD
  14947 pts/0    00:00:00 bash
  16290 pts/0    00:00:00 ping
  16291 pts/0    00:00:00 ps

在上面的示例中通过 ping 8.8.8.8 > /dev/null & 在当前控制台下后台开启了一个有关 ping 的进程。
如果开启这个后台进程后开启另一个控制台再是使用 ps 就是另一个场景了,是看不到 ping 进程的,使用单个 ps 不带参数,只能再该控制台来查看!!!

ps 实操示列

ps -ef: -e 显示所有进程,-f 显示完整格式的输出

[root@server ~]# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 11:14 ?        00:00:02 /usr/lib/systemd/systemd --system --deserialize 19
root           2       0  0 11:14 ?        00:00:00 [kthreadd]
root           3       2  0 11:14 ?        00:00:00 [rcu_gp]
root           4       2  0 11:14 ?        00:00:00 [rcu_par_gp]
--snip--

ps -efww: -e 显示所有进程,-f 显示完整格式的输出,-w 采用宽输出模式,不限宽度显示

[root@server ~]# ps -efww | grep qemu
root       16314   14947  0 17:00 pts/0    00:00:00 grep --color=auto qemu
posted @ 2024-09-05 16:40  takenika  阅读(46)  评论(0)    收藏  举报