Linux查看系统进程
进程是在
CPU及内存中运行的程序代码,而每个进程可以创建一个或多个进程(父子进程)
在linux中可能不明显,但是windows系统中的任务管理器大家应该都很熟悉:

在linux中查看系统进程的命令有不少,以下是一些常用命令。
ps命令
ps (process status)命令是Linux下最常用的进程查看工具。使用该命令可以确定哪些进程正在运行和运行的状态、进程是否结束、有没有僵尸进程、哪些进程占用了过多的资源等等。注意:
ps命令工具显示的是进程的瞬间状态(相当于截图),并不是动态连续显示。
主要的参数:[aux]
a:显示当前终端下的所有进程信息,包括其他用户的进程。u:使用以用户为主的格式输出进程信息。x:显示当前用户在所有终端下的进程。

USER:启动该进程的用户账号名称PID:该进程的 唯一ID号%CPU:CPU占用的百分比%MEM:内存占用的百分比VSZ:占用虚拟内存(swap空间)的大小RSS:占用常驻内存(物理内存)的大小TTY 或 TT:表示该进程在哪个终端上运行。不是从终端启动的进程或与终端机无关的进程则显示为?STAT:显示了进程当前的状态。如以下:D不可中断的休眠。通常是IO。R运行。正在运行或者在运行队列中等待。S休眠。在等待某个事件,信号。T停止。进程接收到信息SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号。X死掉的进程,不应该出现。Z僵死进程。对发现处于僵死状态的进程应予以手动终止。- 通常还会跟随如下字母表示更详细的状态:
<高优先级N低优先级L有pages在内存中locked。用于实时或者自定义IO。s进程领导者,其有子进程。l多线程+位于前台进程组
START:启动该进程的时间TIME:该进程占用CPU时间COMMAND:启动该进程的命令的名称
总结:ps aux 是以简单列表的形式显示出进程信息。
此外,还有另外一种方式:-[elf]
-e:显示系统内的所有进程信息。-l:使用长(long)格式显示进程信息。-f:使用完整的(full)格式显示进程信息。

PPID 为父进程的 PID
ps -ef 是用标准的格式显示进程,显示的项目有:UID, PID, PPID, C, STIME, TTY, TIME, CMD 字段
ps aux 是用 BSD 的格式来显示进程,显示的项目有:USER, PID, % CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME, COMMAND
字段
所示:
- 如果想查看进程的
CPU占用率和内存占用率,可以使用aux - 如果想查看进程的父进程
ID和完整的COMMAND命令,可以使用-ef
top命令
以全屏交互式的界面显示进程排名,及时跟踪包括 CPU、内存等系统资源占用情况,默认情况下每三秒刷新一次,其作用基本类似于 Windows 系统中的任务管理器。

Tasks(系统任务)信息:total:总进程数;running:正在运行的进程数;sleeping:休眠的进程数;stopped:中止的进程数;zombie:僵死无响应的进程数。
CPU信息:us:用户占用;sy:内核占用;ni:优先级调度占用;id:空闲CPU;wa:I/O 等待占用;hi:硬件中断占用;si:软件中断占用;st:虚拟化占用。
Mem(内存)信息:total:总内存空间;used:已用内存;free:空闲内存;buffers:缓存区域。
Swap(交换空间)信息:total:总交换空间;used:已用交换空间;free:空闲交换空间;cached:缓存空间。
了解空闲的 CPU 百分比,主要看 % id 部分。
htop命令
htop与top很类似,但是htop是交互式的文本模式的进程查看器。它通过文字图形化地显示每一个进程的CPU和内存使用量、swap使用量。使用上下光标键选择进程,F7和F8改变优先级,F9杀死进程。

pstree命令
linux中,每一个进程都是由其父进程创建的。此命令以可视化方式显示进程,通过显示进程的树状图来展示进程间关系。

可用参数:
-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;-c:不使用精简标示法;-G:使用 VT100 终端机的列绘图字符;-h:列出树状图时,特别标明现在执行的程序;-H<程序识别码>:此参数的效果和指定 “-h” 参数类似,但特别标明指定的程序;-l:采用长列格式显示树状图;-n:用程序识别码排序。预设是以程序名称来排序;-p:显示程序识别码;-u:显示用户名称;
优化使用
在实际的使用过程中,单纯上述命令的返回结果真的是让人看的眼都花了……
其实我们根本不需要那么详细或者那么全面的进程信息,可能我们只在意某个进程的某个信息……
1-grep
使用管道符|配合grep字符串匹配,定位到含有特定字符的进程
|
|

可通过kill -s 9 [pid]强制杀死进程。
2-pgrep
pgrep 的 p 表明了这个命令是专门用于进程查询的 grep,pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。
参数:
|
|
如列出进程的名字和 id
|
|

3-pidof
直接查询某个进程的pid,但是需要知道进程的全名
