[toc]
1、ps命令介绍
ps
命令是用来静态显示系统中进程的命令。
不过这个命令有些特殊,它部分命令的选项前不能加
-
,比如命令
ps aux
,其中
aux
是选项,但是这个选项前不能加
-
。
这是因为
ps
命令的部分选项需要遵守BSD操作系统的格式,所以
ps
命令的常用选项的组合是固定的。
命令如下:
# 查看系统中所有进程,使用BSD操作系统格式。# aux选项组合是一个习惯用法。[root@localhost ~]# ps aux# 查看系统中所有进程,使用Linux标准命令格式。[root@localhost ~]# ps -le常用选项:а:显示终端上的所有进程,包括其他用户的进程。u:以用户为主的格式来显示程序状况。x:显示所有程序,不以终端机来区分。-l:长格式显示。显示更加详细的信息。-е:显示所有进程,和-A作用一致-h:不显示标题。-f:全格式。-w:宽输出。
2、ps aux命令示例
示例:查看系统中所有正在运行的进程。
[root@localhost ~]# ps -auxWarning: bad syntax, perhaps a bogus \'-\'? See /usr/share/doc/procps-3.2.8/FAQUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.0 19344 1548 ? Ss 08:41 0:02 /sbin/initroot 2 0.0 0.0 0 0 ? S 08:41 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? S 08:41 0:00 [migration/0]...省略...
如果
aux
选项前面加了一个
-
,就会出现一个行警告:
Warning: bad syntax, perhaps a bogus \'-\'? See /usr/share/doc/procps-3.2.8/FAQ
提示你有语法错误,多了一个
-
。
但是之后显示的Linux系统进程的结果是正确的。
我们把
aux
选项前面的
-
去掉就可以了,如下:
[root@localhost ~]# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.0 19344 1548 ? Ss 08:41 0:02 /sbin/initroot 2 0.0 0.0 0 0 ? S 08:41 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? S 08:41 0:00 [migration/0]...省略...
ps aux
命令输出项解释:
-
USER
:该进程是由哪个用户产生的。
-
PID
:进程的ID号。
-
%CPU
:该进程占用CPU资源的百分比,占用越高,进程越耗费资源。
-
%MEM
:该进程占用物理内存的百分比,占用越高,进程越耗费资源。
-
VSZ
:该进程占用虚拟内存的大小,单位KB。
-
RSS
:该进程占用实际物理内存的大小,单位KB。
-
TTY
:该进程是在哪个终端中运行的。其中
tty1-tty7
代表本地控制台终端(可以通过
alt+F1-F7
键切换不同的终端),
tty1-tty6
是本地的字符界面终端,
tty7
是图形终端。
pts/0-255
代表虚拟终端,一般是远程连接的终端,第一个远程连接占用的是
pts/0
终端,第二个远程连接占用
pts/1
,依次增长。
-
STAT
:进程状态。(点击链接,可查看文章中的进程状态介绍。https://www.cnblogs.com/liuyuelinfighting/p/15692465.html)
-
START
:该进程的启动时间。
-
TIME
:该进程占用CPU的运算时间,注意不是系统时间,时间越长证明该进程越耗资源。
-
COMMAND
:产生此进程的命令名。
提示:
Linux系统中,用户的名称,文件的名称,包括进程的名称等,都是给用户看的。
Linux系统查找的时候,还是根据ID信息来进行查找。
说明:
我们可以看到
ps aux
命令的执行结果中,TTY输出项有的是
?
,其实这些都是由Linux系统内核直接产生的进程,不需要终端来调用,也就没有运行终端的信息。
3、ps -le命令示例
示例:查看系统中所有正在运行的进程。
[root@localhost ~]# ps -leF S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD4 S 0 1 0 0 80 0 - 4836 poll_s ? 00:00:02 init1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd1 S 0 3 2 0 -40 - - 0 migrat ? 00:00:00 migration/0...省略...
ps -le
命令输出项解释:
-
F
:进程标志,说明进程的权限。常见的标志有:1:进程可以复制,但是不能执行。4:进程使用超级用户权限。
-
S
:进程状态。具体的状态和
ps aux
命令中STAT状态一致。
-
UID
:进程是哪个UID用户调用运行的。
-
PID
:进程的ID号。
-
PPID
:父进程的ID号。
-
C
:该进程的CPU使用率,单位是百分比。
-
PRI
:进程的优先级,数值越小该进程优先级越高,越快被CPU执行。
-
NI
:进程的优先级,也是数值越小越早被执行。
-
ADDR
:该进程在内存的哪个位置。
-
SZ
:该进程占用多大内存。
-
WCHAN
:该进程是否运行。
-
代表正在运行。
-
TTY
:该进程由哪个终端产生的。
-
TIME
:该进程占用CPU的运算时间,注意不是系统时间。
-
CMD
:产生此进程的命令名(缩写)。
说明:
ps aux
命令和
ps -le
命令,两个命令都是静态查看Linux系统所有正在运行的进程。
具体用哪个命令,看自己的习惯。我比较习惯用
ps aux
命令查看Linux系统进程。
如果要看产生此进程的命令名的全程,就需要用
ps aux
命令,有的时候会比较方便。
4、pstree命令
可以查看到进程之间依赖关系的,一个进程会依赖哪些进程。
pstree
命令也是查看Linux系统中进程的命令,是以树型关系方式展示的。
[root@localhost ~]# pstree [选项]选项:-p:显示进程的PID。-u:显示进程的所属用户。
示例: