ps 命令是最常用的监控进程的命令,通过此命令可以查看系统中所有运行进程的详细信息
参数:
a:显示一个终端的所有进程,除会话引线外;
 u:显示当前用户进程及内存的使用情况;
 x:显示没有控制终端的进程;
 l:长格式显示更加详细的信息;
 e:显示所有进程;
 f:全格式,包括命令行
 几个固定参数,比如:
ps -aux:可以查看系统中所有的进程;
 ps -le:可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级;
 ps -l:只能看到当前 Shell 产生的进程;
 ps -T -p :查看指定进程的所有线程
 ps -Lf :查看指定进程的所有线程的详细信息
 【例1】查看系统所有进程
shen@ubuntu-vm:~$ ps -aux | head -10
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.2 168412 10388 ?        Ss   12:47   0:01 /sbin/init splash
root           2  0.0  0.0      0     0 ?        S    12:47   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   12:47   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   12:47   0:00 [rcu_par_gp]
root           5  0.0  0.0      0     0 ?        I<   12:47   0:00 [netns]
root           7  0.0  0.0      0     0 ?        I<   12:47   0:00 [kworker/0:0H-events_highpri]
root          10  0.0  0.0      0     0 ?        I<   12:47   0:00 [mm_percpu_wq]
root          11  0.0  0.0      0     0 ?        S    12:47   0:00 [rcu_tasks_rude_]
root          12  0.0  0.0      0     0 ?        S    12:47   0:00 [rcu_tasks_trace]
 
 【例2】查看系统所有进程
 "ps aux"命令可以看到系统中所有的进程,"ps -le"命令也能看到系统中所有的进程。由于 “-l” 选项的作用,所以 “ps -le” 命令能够看到更加详细的信息,比如父进程的 PID、优先级等。但是这两个命令的基本作用是一致的,掌握其中一个就足够了
shen@ubuntu-vm:~$ ps -le | head -10
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0       1       0  0  80   0 - 42103 -      ?        00:00:01 systemd
1 S     0       2       0  0  80   0 -     0 -      ?        00:00:00 kthreadd
1 I     0       3       2  0  60 -20 -     0 -      ?        00:00:00 rcu_gp
1 I     0       4       2  0  60 -20 -     0 -      ?        00:00:00 rcu_par_gp
1 I     0       5       2  0  60 -20 -     0 -      ?        00:00:00 netns
1 I     0       7       2  0  60 -20 -     0 -      ?        00:00:00 kworker/0:0H-events_highpri
1 I     0      10       2  0  60 -20 -     0 -      ?        00:00:00 mm_percpu_wq
1 S     0      11       2  0  80   0 -     0 -      ?        00:00:00 rcu_tasks_rude_
1 S     0      12       2  0  80   0 -     0 -      ?        00:00:00 rcu_tasks_trace
 
 【例 3】如果不想看到所有的进程,只想查看一下当前登录产生了哪些进程,那只需使用 “ps -l”
shen@ubuntu-vm:~$ ps -l
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000   14230   14088  0  80   0 -  3524 do_wai pts/3    00:00:00 bash
0 R  1000   16222   14230  0  80   0 -  3622 -      pts/3    00:00:00 ps可以看到,这次从 pts/3 虚拟终端登录,只产生了两个进程:一个是登录之后生成的 Shell,也就是 bash;另一个是正在执行的 ps 命令。
我们再来说说僵尸进程。僵尸进程的产生一般是由于进程非正常停止或程序编写错误,导致子进程先于父进程结束,而父进程又没有正确地回收子进程,从而造成子进程一直存在于内存当中,这就是僵尸进程。如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源