Linux系统中会运行各种各样的进程,如果要对进程进行监控,首先必须了解当前进程的情况,也就是需要查看当前进程。ps命令就是最基本的进程查看命令,使用该命令可以看到有哪些进程正在运行,并且可以看到进程的运行状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到。ps是显示瞬间进程的状态,并不动态连续,如果想对进程进行实时监控应该用top命令。ps命令的格式为:
ps命令常用的选项参数有:
|
显示所有的进程,跟-e的效果相同
|
显示现行终端机下的所有进程,包括其他用户的进程
|
显示当前用户的进程状态
|
通常与 a 这个参数一起使用,可列出较完整信息
|
较长、较详细的将该PID的信息列出
|
|
|
由于ps命令支持的系统类型相当的多,所以它的参数多的离谱,而且有没有加上 - 差很多,所以只需要记住常用的几个命令即可。
【例1】较长、较详细的将属于本次登入用户的进程列出来
- F:代表这个进程的flag,如果是4,则代表使用者为 super user
- S:代表这个进程的状态stat
- C:占用CPU资源的百分比
- PRI:指进程的执行优先级(Priority的简写),其值越小越早被执行
- NI:代表进程的nice值,其表示进程可被执行的优先级的修正数值
- ADDR:代表进程的地址,它指出该进程在内存的哪个部分,如果是个正在运行的程序,一般都是"-"
- WCHAN:判断当前进程是否正在运行,若为"-",则代表正在运行
- TTY:该进程是在那个终端机上面运行,若与终端机无关,则显示?,另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
- CMD:所下达的指令名称
【例2】列出当前内存中的所有进程
- USER:表示该进程属于哪个用户
- %CPU:该进程占用CPU资源的百分比
- %MEM:该进程占用内存的百分比
- VSZ:该进程使用掉的虚拟内存量 (Kbytes)
- RSS:该进程占用的固定的内存量 (Kbytes)
- TTY:该进程是在那个终端机上面运行,若与终端机无关,则显示?,另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
- STAT:代表该进程目前的状态,主要的状态有:
- S:该进程正在休眠,但可被某些信号(signal)唤醒
- Z:僵死状态,该进程应该已经终止,但是其父进程却无法正常的终止它,造成zombie(疆尸)程序的状态
- START:该进程被触发启动的时间
- COMMAND:该进程的实际指令
Linux 中的 ps 命令是 Process Status 的缩写。ps 命令用来列出系统中 当前正在运行 的那些进程,**就是执行 ps 命令的那个时刻的那些进程的快照。**使用该命令可以确定有哪些进程 正在运行 和
运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
ps 查看的结果不是动态连续的,如果想要动态的显示进程信息,就可以使用 top、htop 命令。
kill 命令用于杀死进程。
十二 个经典 Linux 进程管理命令介绍
-
ps:查看 Linux 中当前运行的进程的命令。能列出系统中运行的进程,包括进程号、命令、CPU使用量、内存使用量等
ps -a - 列出所有运行中/激活进程
ps -aux - 显示进程信息,包括无终端的(x)
-
pstree :linux中每一个进程都是由其父进程创建的。pstree以可视化方式显示进程,通过显示进程的树状图来展示进程间关系。如果指定了pid了,那么树的根是该pid,不然将会是init(pid: 1)。
-
top:实时的监控系统状态信息和进程所使用的资源。显示进程的数据包括 PID、进程属主、优先级、%CPU、%memory等。可以使用这些显示指示出资源使用量。
-
htop:htop 与 top 很类似,但是 htop 是交互式的文本模式的进程查看器。它通过文字图形化地显示每一个进程的CPU和内存使用量、swap使用量。使用上下光标键选择进程,F7和F8改变优先级,F9杀死进程。Htop不是系统默认安装的,所以需要额外安装。
-
nice:通过 nice 命令的帮助,用户可以设置和改变进程的优先级。提高一个进程的优先级,内核会分配更多CPU时间片给这个进程。默认情况下,进程以 0 的优先级启动。进程优先级可以通过 top 命令显示的 NI(nice value)列查看。
进程优先级值的范围从-20到19。值越低,优先级越高。nice <优先值> <进程名> - 通过给定的优先值启动一个程序
-
renice:renice 命令类似 nice 命令。使用这个命令可以改变正在运行的进程优先值。
注意,用户只能改变属于他们自己的进程的优先值。
renice -u -g - 通过指定用户和组来改变进程优先值
-
kill :用来发送信号给进程,并结束进程。如果一个进程没有响应杀死命令,这也许就需要强制杀死,使用 -9 参数来执行。
注意:使用强制杀死的时候一定要小心,因为进程没有时机清理现场,也许写入文件没有完成。
如果 不知道进程PID 或者 用名字杀死 进程时候,killall 就能派上用场。
kill — 使用 kill 时候,需要知道进程ID号,可以通过 ps 命令得到 进程号
pkill <进程名> — pkill 是类似的命令,但使用模式匹配,如进程名,进程拥有者等。
-
ulimit :控制系统资源在shell和进程上的分配量。对于系统管理员是最有用的,可以管理重度使用和存在性能问题的系统。
限制资源大小可以确保重要进程持续运行,其他进程不会占用过多资源。
-f - 最大文件尺寸大小
-v - 最大虚拟内存大小(KB)
-n - 增加最大文件描述符数量
-H : 改变和报告硬限制
-S : 改变和报告软限制
ulimit -a - 显示当前用户关联的资源限制
-
w :显示当前登录的用户及其正在执行的进程的信息。
显示信息头包含信息,如当前时间、系统运行时长、登录用户总数、过去的1,5,15分钟内的负载均衡数。
基于这些用户信息,用户在终止不属于他们的进程时要小心。
-
who: 和 w 类似的命令,提供当前登录用户列表、系统启动时间、运行级别等。
-
pgrep :pgrep 的意思是 " 进程号全局正则匹配输出 "。该命令扫描当前运行进程,然后按照命令匹配条件列出匹配结果到标准输出。对于通过名字检索进程号是很有用。