首先要明白Linux下什么是进程
进程是一个正在运行的程序。也就是说在Linux系统上运行的所有东西都是进程。和进程相比较,作业是一系列按一定顺序执行的命令。一条简单的命令可能会涉及多个进程,尤其是当使用管道和重定向时。例如命令:
# nroff –man ps.1 | grep kill | more
将产生三个进程,每一条命令一个。
Linux操作系统有好几种进程,每一种都有其各自的品质和特性。下面给出了Linux系统的三种进程:
■ 交互式进程:一个由shell启动并控制的进程。交互式进程既可在前台也可在后台运行。
■ 批处理进程:与终端无关,安排在指定时刻完成的一系列进程。
■ 守护进程:在引导系统时起动,以执行即时的操作系统任务,如 lpd、inetd、named等。
1. ps简介
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
2. ps命令的输出
ps命令通常以行列的形式输出结果。系统中的每一个进程都有一个唯一的标志符以便Linux可以识别它们。Linux通过给每一个进程分配唯一的数码来处理进程,这个数码叫做进程ID号(或PID号)。PID号当系统被引导时从0开始,每增加一个进程就加1位,直到系统确定的一个数字,例如 65564。然后,PID号再从0开始,周而复始,不断循环。通常PID号较小的进程是系统的核心和守护进程,当系统被引导时它们就存在,并只要系统还在运行,它们就处于活跃状态。当用户管理进程时(比如终止它们),就必须要用到PID号。ps命令输出的TTY列告诉用户进程从哪一个终端开始。如果作为普通用户登录,那么通常就是用户自己的终端或控制台。如果在一个多控制台的系统上工作,用户将看到自己在每一个控制台起动的所有进程。
ps命令输出的STAT列告诉用户当前进程的状态。进程最常见的两种状态是S(sleeping)代表沉睡的进程和R(running)代表运行的进程。运行的进程是当前正在CPU中执行的进程,而沉睡的进程是当前并不活动的进程。进程可以每秒种在沉睡和运行两种状态间转换多次。
ps命令输出的TIME列告诉用户进程占用CPU的总共时间,这些时间通常都很短,这是因为大多数进程运行结束只需很短的时间就够了。
COMMANDS列,这一列包含了用户所运行的所有命令的名称。出现在COMMANDS列中的通常都是用户使用的命令,但有些命令还会引起其它的进程,这些进程被称为子进程。
3. ps命令及其参数
ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设
备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。
该命令语法格式如下:
ps technet:选项
下面对命令选项进行说明:
-e 显示所有进程。
-f 全格式。
-h 不显示标题。
-l 长格式。
-w 宽输出。
a 显示终端上的所有进程,包括其他用户的进程。
r 只显示正在运行的进程。
O+ k1 [,+ k2 technet:,…] 根据SHORT KEYS、k1、k2中快捷键指定的多级排序顺序显示进程列表。对于ps的不同格式都存在着默认的顺序指定。
这些默认顺序可以被用户的指定所覆盖。其中"+"字符是可选的,"-"字符是倒转指定键的方向。
以下介绍长命令行选项,这些选项都使用“–”开头:
–sort X+ key [,+ key technet:,…] 从SORT KEYS段中选一个多字母键。“+”字符是可选的,因为默认的方向就是按数字升序或者词典顺序。比如: ps -jax -sort=uid,-ppid,+pid。
–help 显示帮助信息。
–version 显示该命令的版本信息。
在前面的选项说明中提到了排序键,接下来对排序键作进一步说明。需要注意的是排序中使用的值是ps使用的内部值,并非仅用于某些输出格式的伪值。
排序键 短格式 长格式 说明
c cmd 可执行的简单名称
C cmdline 完整命令行
f flags 长模式标志
g pgrp 进程的组ID
G tpgid 控制tty进程组ID
j cutime 累计用户时间
J cstime 累计系统时间
k utime 用户时间
K stime 系统时间
m min_flt 次要页错误的数量
M maj_flt 主要页错误的数量
n cmin_flt 累计次要页错误
N cmaj_flt 累计主要页错误
o session 对话ID
p pid 进程ID
P ppid 父进程ID
r rss 驻留大小
R resident 驻留页
s size 内存大小(千字节)
S share 共享页的数量
t tty tty次要设备号
T start_time 进程启动的时间
U uid UID
u user 用户名
v vsize 总的虚拟内存数量(字节)
y priority 内核调度优先级
4. 常用ps命令参数
最常用的三个参数是u、a、x,下面将通过例子来说明其具体用法。
以root身份登录系统,查看当前进程状况
$ ps
PID TTY TIME COMMAND
5800 ttyp0 00:00:00 bash
5835 ttyp0 00:00:00 ps
可以看到,显示的项目共分为四项,依次为PID(进程ID)、TTY(终端名称)、TIME(进程执行时间)、COMMAND(该进程的命令行输入)。
可以使用u选项来查看进程所有者及其他一些详细信息,如下所示:
$ ps u
USER PID %CPU %MEM USZ RSS TTY STAT START TIME COMMAND
test 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 -bash
test 5836 0.0 0.3 2528 856 ttyp0 R Nov27 0:00 ps u
在bash进程前面有条横线,意味着该进程便是用户的登录shell,所以对于一个登录用户来说带短横线的进
程只有一个。还可以看到%CPU、%MEM两个选项,前者指该进程占用的CPU时间和总时间的百分比;后者指该进程
占用的内存和总内存的百分比。
$ ps x
(结果太长就不列出了..)
在这种情况下我们会看到所有控制终端的进程;
特别说明 -l选项可以告诉您某条进程是由哪一条进程引起的,这只有当想鉴别子进程时才有用:
$ ps -l
F UID PID PPID PRI NI SIZE RSS WCHAN STAT TTY TIME COMMAND
0 501 41 1 15 0 364 472 114d9c S v01 0:00 –bash
0 501 121 41 29 0 64 208 0 R v01 0:00 ps –l
PPID(Parent Process ID)是进程的父进程的ID号。在本例中,列出的第一个进程(PID 41)是第二个进程(PID 121)的父进程。您还可以看到,ps –l的父进程login Bourne shell的PID是1,这是操作系统的init进程。如果init被终止,那么所有的进程都会被杀死。简单地说,如果init死了,系统将关机。
分享到:
相关推荐
Linux ps 命令详解 Linux ps 命令是一种强大的进程查看命令,可以确定有哪些进程正在运行、进程是否结束、进程是否僵死、哪些进程占用了过多的资源等等。ps 命令最经常使用的是用于监控后台进程的工作情况,因为...
在Linux操作系统中,`ps`命令是一个非常基础且重要的工具,用于查看系统当前进程的状态。它的功能强大,能够提供各种不同的输出格式,帮助系统管理员监控和管理系统的运行情况。源码分析可以帮助我们深入理解`ps`...
**Linux `ps` 命令详解** 在Linux操作系统中,`ps`(Process Status)命令是用于查看系统当前进程状态的工具。它能够显示进程的实时信息,帮助用户了解系统的运行情况,进行进程管理。`ps`命令历史悠久,功能强大,...
Linux ps 命令、kill 命令及 kill 函数概述 Linux 操作系统中,ps 命令和 kill 命令是两个非常重要的命令,分别用于显示进程信息和中止进程。这两个命令在 Linux 系统中扮演着非常重要的角色。 ps 命令是用于显示...
Linux ps 命令、kill 命令及 kill 函数概述 Linux 操作系统中,ps 命令和 kill 命令是两个非常重要的命令,ps 命令用于显示当前系统中的所有进程信息,而 kill 命令用于结束某个进程。下面将详细介绍 ps 命令和 ...
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有...
`ps aux`是Linux系统中一个非常常用的命令,用于查看系统中当前运行的进程状态。这个命令可以帮助系统管理员和开发者了解系统的运行情况,监控资源使用,查找问题,以及调试程序。下面将详细介绍`ps aux`命令及其...
在Linux操作系统中,`top`和`ps`是两个非常重要的命令行工具,它们用于监控系统中的进程状态和性能。这两个工具的源代码分析能够帮助我们深入理解Linux内核的工作原理,以及进程管理的相关机制。 `top`命令是实时...
Linux系统中的PS命令是一个非常强大的工具,用于报告当前系统进程的状态。PS命令能够显示出一个快照,包括当前系统中所有正在运行的进程的详细信息。PS命令常用于监控系统、诊断问题以及查看进程状态。以下是对PS...
在Linux操作系统中,掌握一些基础的系统管理命令是至关重要的,比如`top`, `ps`, `kill`, `free`和`vmstat`等。这些命令提供了监控系统性能、查看进程状态、管理进程以及分析内存和虚拟内存使用情况的能力。本源码包...
本文将探讨如何通过编写一个简单的Linux内核模块来模拟`ps`命令,该命令用于显示系统中当前运行的进程状态。首先,我们需要理解`ps`命令的工作原理以及如何在内核级别实现类似的功能。 `ps`命令是通过读取 `/proc` ...
【Linux环境下运行PlayStation模拟器】 在Linux操作系统中体验PlayStation游戏并非难事,借助开源社区的努力,Linux已经能够很好地支持多媒体应用。本文主要讲解如何在Linux环境下配置硬件驱动,特别是显卡、声卡和...
在本文档中,我们探讨了如何使用非Petalinux的方式对Zynq系列PS端进行嵌入式源码开发,包括移植U-boot、Linux内核、设备树和根文件系统。这种方法是基于Xilinx官方提供的源码进行的,旨在遵循标准的Linux开发流程。 ...
《PS转PDF专家》,简称《PStoPDF》是一款专门用于将北大方正排版的PS文件转换成标准的PDF文件,并支持补字。转换后的PDF文件可以拷贝复制,转存文本,打印输出以及出片印刷。 PS文件是指Postscript格式的文件。 本...
在Linux系统管理中,了解和熟练使用`ps`和`pstree`命令是至关重要的,因为它们可以帮助我们查看和管理系统的进程。这篇文章将对这两个命令进行深入的解析和总结。 `ps`命令,全称为Process Status,是用于查看当前...
其次,Linux DMA测试APP源代码是运行在PS上的应用程序,用于触发和监控DMA传输。在Linux内核中,通常通过驱动程序来控制DMA,这些驱动程序需要与PL中的DMA控制器硬件接口相匹配。源代码可能包含初始化DMA控制器、...