Linux命令之ps
ps [选项]
报告当前进程状态。ps显示有关选择的活动进程的信息。如果要重复更新选择和显示的信息,请使用top。ps命令可以搭配kill随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些正在运行和运行的状态、进程是否结束、进程有没有僵死、呢些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
进程是已启动的可执行程序的运行实例。
(1).常用选项
-A 显示所有进程
-e 显示所有进程,和-A一样
-f 完整格式显示
-u userlist 显示指定用户的进程信息,userlist必须是有效用户ID或名称
u 基于用户的格式显示
-a 显示除会话引导程序和与终端无关的进程之外所的所有进程
a 显示具有终端 (tty)的所有进程,或与x选项一起使用时显示所有进程
x 显示当前用户(有效用户ID)所拥有的进程,类似EUID,或与a选项一起使用时,显示所有进程
-H 显示进程层次结构(树状)
-j BDSM作业控制格式
j 作业格式
最常用的应该就是ps aux或ps -ef。ps aux表示用BSD格式显示进程,ps -ef表示用标准格式显示进程。
(2).实例
1)显示所有进程
[root@CentOS6 桌面]# ps -e | more -20 //more后面不加数值则会自动填满屏幕,<Enter>键是一行,<Space>是一页
PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 stopper/0
6 ? 00:00:00 watchdog/0
7 ? 00:00:00 migration/1
8 ? 00:00:00 stopper/1
9 ? 00:00:00 ksoftirqd/1
10 ? 00:00:00 watchdog/1
11 ? 00:00:09 events/0
12 ? 00:00:01 events/1
13 ? 00:00:00 events/0
14 ? 00:00:00 events/1
15 ? 00:00:00 events_long/0
16 ? 00:00:00 events_long/1
17 ? 00:00:00 events_power_ef
18 ? 00:00:00 events_power_ef
19 ? 00:00:00 cgroup
--More--
2)显示指定用户的进程信息
[root@CentOS6 桌面]# ps -u root | more -10
PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 stopper/0
6 ? 00:00:00 watchdog/0
7 ? 00:00:00 migration/1
8 ? 00:00:00 stopper/1
9 ? 00:00:00 ksoftirqd/1
--More--
3)ps a和ps -a的区别
[root@CentOS6 桌面]# ps a
PID TTY STAT TIME COMMAND
2013 tty2 Ss+ 0:00 /sbin/mingetty /dev/tty2
2020 tty3 Ss+ 0:00 /sbin/mingetty /dev/tty3
2030 tty4 Ss+ 0:00 /sbin/mingetty /dev/tty4
2033 tty5 Ss+ 0:00 /sbin/mingetty /dev/tty5
2035 tty6 Ss+ 0:00 /sbin/mingetty /dev/tty6
2053 tty1 Ssl+ 2:26 /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/ru
4428 pts/1 Ss 0:00 /bin/bash
4438 pts/1 T 0:00 more -10
4449 pts/1 R+ 0:00 ps a
[root@CentOS6 桌面]# ps –a
PID TTY TIME CMD
4438 pts/1 00:00:00 more
4450 pts/1 00:00:00 ps
4)显示所有进程包括命令行
[root@CentOS6 桌面]# ps -ef | more -10
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 14:10 ? 00:00:02 /sbin/init
root 2 0 0 14:10 ? 00:00:00 [kthreadd]
root 3 2 0 14:10 ? 00:00:00 [migration/0]
root 4 2 0 14:10 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 14:10 ? 00:00:00 [stopper/0]
root 6 2 0 14:10 ? 00:00:00 [watchdog/0]
root 7 2 0 14:10 ? 00:00:00 [migration/1]
root 8 2 0 14:10 ? 00:00:00 [stopper/1]
root 9 2 0 14:10 ? 00:00:00 [ksoftirqd/1]
--More--
说明:
UID 程序被该 UID 所拥有
PID 就是这个程序的 ID !
PPID 则是其上级父程序的ID
C CPU 使用的资源百分比
STIME 进程启动的系统时间
TTY 登入者的终端机位置。如果显示?表示与终端无关,一般是内核进程。tty1~tty6是本机上登入者程序;pts/0等表示运行在虚拟终端上的进程。
TIME 使用掉的 CPU 时间。
CMD 所下达的指令为何
5)ps和grep结合起来查找进程
[root@CentOS6 桌面]# ps -ef|more -5
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 14:10 ? 00:00:02 /sbin/init
root 2 0 0 14:10 ? 00:00:00 [kthreadd]
root 3 2 0 14:10 ? 00:00:00 [migration/0]
root 4 2 0 14:10 ? 00:00:00 [ksoftirqd/0]
--More—
[2]+ Stopped ps -ef | more -5
[root@CentOS6 桌面]# ps -ef |grep ksoftirqd/0
root 4 2 0 14:10 ? 00:00:00 [ksoftirqd/0]
root 4534 4484 0 18:54 pts/0 00:00:00 grep ksoftirqd/0
6)将目前属于您这次登录的PID与相关信息列出来
[root@CentOS6 桌面]# ps –l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 4568 4566 0 80 0 - 27087 wait pts/0 00:00:00 bash
4 R 0 4578 4568 0 80 0 - 27035 - pts/0 00:00:00 ps
说明:
F 代表这个程序的旗标 (flag), 4 代表使用者为 super user
S 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内文介绍
UID 程序被该 UID 所拥有
PID 就是这个程序的 ID !
PPID 则是其上级父程序的ID
C CPU 使用的资源百分比
PRI 这个是 Priority (优先执行序) 的缩写
NI 这个是 Nice 值
ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"
SZ 使用掉的内存大小
WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作
TTY 登入者的终端机位置
TIME 使用掉的 CPU 时间。
CMD 所下达的指令为何
在预设的情况下, ps 仅会列出与目前所在的 bash shell 有关的 PID 而已,所以, 当我使用 ps -l 的时候,只有三个 PID。
7)显示进程间的关系
[root@CentOS6 桌面]# ps f
PID TTY STAT TIME COMMAND
4568 pts/0 Ss 0:00 /bin/bash
4630 pts/0 R+ 0:00 \_ ps f
2053 tty1 Ssl+ 2:48 /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/ru
2035 tty6 Ss+ 0:00 /sbin/mingetty /dev/tty6
2033 tty5 Ss+ 0:00 /sbin/mingetty /dev/tty5
2030 tty4 Ss+ 0:00 /sbin/mingetty /dev/tty4
2020 tty3 Ss+ 0:00 /sbin/mingetty /dev/tty3
2013 tty2 Ss+ 0:00 /sbin/mingetty /dev/tty2
8)列出目前所有正在内存中的程序
[root@CentOS6 桌面]# ps aux | more -10
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19352 1552 ? Ss 14:10 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S 14:10 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 14:10 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S 14:10 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S 14:10 0:00 [stopper/0]
root 6 0.0 0.0 0 0 ? S 14:10 0:00 [watchdog/0]
root 7 0.0 0.0 0 0 ? S 14:10 0:00 [migration/1]
root 8 0.0 0.0 0 0 ? S 14:10 0:00 [stopper/1]
root 9 0.0 0.0 0 0 ? S 14:10 0:00 [ksoftirqd/1]
--More--
说明:
USER:该 process 属于哪一个个使用者账号的
PID :该 process 的号码
%CPU:该 process 使用掉的 CPU 资源百分比
%MEM:该 process 所占用的物理内存百分比
VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
RSS :该 process 占用的固定的内存量 (Kbytes)
TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,Linux进程有5个基本状态
R :该程序目前正在运作,或者是可被运作
S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
T :该程序目前正在侦测或者是停止了
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
D :该程序不可中断
5个基本状态后还可以跟随一些其他状态,如下:<表示进程运行在高优先级上;N表示进程运行在低优先级上;L表示进程有页面锁定在内存中;s表示进程是控制进程;l表示进程是多线程;+表示当前进程在前台运行
START:该 process 被触发启动的时间
TIME :该 process 实际使用 CPU 运作的时间,单位秒
COMMAND:该程序的实际指令
9)列出类似程序树的程序显示
[root@CentOS6 桌面]# ps -axjf | more -10
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 2 0 0 ? -1 S 0 0:00 [kthreadd]
2 3 0 0 ? -1 S 0 0:00 \_ [migration/0]
2 4 0 0 ? -1 S 0 0:00 \_ [ksoftirqd/0]
2 5 0 0 ? -1 S 0 0:00 \_ [stopper/0]
2 6 0 0 ? -1 S 0 0:00 \_ [watchdog/0]
2 7 0 0 ? -1 S 0 0:00 \_ [migration/1]
2 8 0 0 ? -1 S 0 0:00 \_ [stopper/1]
2 9 0 0 ? -1 S 0 0:00 \_ [ksoftirqd/1]
2 10 0 0 ? -1 S 0 0:00 \_ [watchdog/1]
--More--
(3).扩展
进程的生命周期:
描述如下:
父进程复制自己的地址空间(fork分叉)创建一个新的(子)进程结构。每个新的进程分配一个唯一的进程ID(PID),满足跟踪安全性需求。PID和父进程ID(PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代。
CentOS5或CentOS6的PID为1的进程是init。CentOS7的PID为1的进程是systemd。
1)什么是僵尸进程
一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。
通俗来讲就是父进程退出,而子进程没有退出,那么这些子进程没有父进程来管理,就变成了僵尸进程。
2)进程的属性
进程ID(PID),是唯一的数值,用来区分进程
父进程ID(PPID)
启动进程的用户ID(UID)和所属组(GID)
进程状态,运行R、休眠S、僵尸Z
进程执行的优先级
进程所连接的终端名
进程资源占用,比如占用资源大小(内存、CPU占用量)
(4).扩展pstree命令
pstree [选项] [PID或用户名]
以树状图显示进程,默认情况下只显示进程的名字,且相同进程合并显示。很少使用。
在没有任何参数的情况下,默认显示如下
[xf@xuexi ~]$ pstree | more -10
systemd-+-ModemManager---2*[{ModemManager}]
|-NetworkManager-+-dhclient
| `-2*[{NetworkManager}]
|-VGAuthService
|-abrt-dbus---2*[{abrt-dbus}]
|-2*[abrt-watch-log]
|-abrtd
|-accounts-daemon---2*[{accounts-daemon}]
|-alsactl
|-anacron
--More--
如果想要PID,可以使用选项-p
[xf@xuexi ~]$ pstree -p | more -10
systemd(1)-+-ModemManager(6833)-+-{ModemManager}(6858)
| `-{ModemManager}(6877)
|-NetworkManager(6988)-+-dhclient(7291)
| |-{NetworkManager}(6995)
| `-{NetworkManager}(6998)
|-VGAuthService(6831)
|-abrt-dbus(9962)-+-{abrt-dbus}(9963)
| `-{abrt-dbus}(9965)
|-abrt-watch-log(6848)
|-abrt-watch-log(6887)
--More--
Linux命令之ps的更多相关文章
- Linux命令:ps / top
简介:ps - report a snapshot of the current processes. 用途:获取当前时刻程序运行状态 概要:ps [options] 类型:ps is hashed ...
- linux命令之ps命令
1.管道 linux命令管道通过|表示.一般在linux命令中|(管道)之前的命令会输出大量的结果,|(管道)之后的命令一般就是带有条件的,只将|前满足条件的结果显示出来. 2.grep命令 grep ...
- 每天一个linux命令(53)--ps命令
要毁掉一天,从早上开始. Linux中的ps命令是 process status 的缩写.ps 命令用来列出系统中当前运行的那些进程.ps 命令列出的是当前那些进程的快照,就是执行ps 命令的那个时刻 ...
- Linux命令:ps
Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...
- linux 命令——41 ps(转)
Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...
- Linux命令学习-ps命令
Linux中,ps命令的全称是process status,即进程状态的意思,主要作用是列出系统中当前正在运行的进程信息. ps命令的功能很强大,参数也非常多,下面只举几个简单的实例. 显示所有进程信 ...
- 每天一个linux命令:ps命令
Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进 ...
- Linux命令之-ps & kill
1.ps:将某个进程显示出来: 常用命令 :ps -ef |grep Java 1)如下为加不加-e参数的区别 2.一般我们查找某个进程的目的就是把它杀掉,使用kill 命令. kill -9 564 ...
- linux命令学习——ps
1.命令简介 ps命令用来查看系统上的进程信息.要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定 ...
- Linux命令:ps,netstat,top
ps ps用于查看当前运行的进程.如果想查看动态的进程信息,可以使用top命令.查看详细命令帮助使用man ps. ps最常用的选项组合就是ps aux: # ps aux USER PID %CPU ...
随机推荐
- 【题解】APIO2013机器人
其实这题前前后后的思考时间加起来应该有两天之久了,dp状态,转移方式等等都还是比较好想,然而左看右看觉得spfa复杂度未免太爆炸……然后选择看了一篇题解,发现在多重优化之下,其实是可以过的…… 首先建 ...
- [CF327E]Axis Walking([洛谷P2396]yyy loves Maths VII)
题目大意:给一个长度为$n(1\leqslant n\leqslant24)$的序列$S$和$k(0\leqslant k\leqslant2)$个数. 求有多少种$S$的排列方式使得其任何一个前缀和 ...
- 树剖模板by fcdalao
#include<bits/stdc++.h> using namespace std; ; *MX]; *MX]; int n,Index,fir[MX],fa[MX],dfn[MX], ...
- 【BZOJ】2453: 维护队列【BZOJ】2120: 数颜色 二分+分块(暴力能A)
先说正解:把所有相同的数相成一个链在每一个区间里的种数就是不同链的链头,那么记录每个数的上个相同数所在位置,那么只要找出l到r之间前驱值在l之前的数的个数就可以了 本人打的暴力,有一个小技巧,用cha ...
- [uva 1350]数位dp+二分
题目链接:https://vjudge.net/problem/38405 #include<bits/stdc++.h> using namespace std; ][]; ]; lon ...
- Codeforces Round #478 C. Valhalla Siege
C. Valhalla Siege time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- windows下maven打包eclipse工程
打包过程中,可能出现的2个问题: ①.[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build ...
- 精通javascript笔记(智能社)——数字时钟
JS代码: <script type="text/javascript"> window.onload=function(){ //小于10的数字补零及数字转字符 ...
- java使用JNA调用dll
1.自己搞一个dll出来.参考下面链接 http://blog.csdn.net/lqena/article/details/46357165. 2.下载jar jna-4.2.1.jar. 3.复制 ...
- NET中IL理解(转)
.NET CLR 和 Java VM 都是堆叠式虚拟机器(Stack-Based VM),也就是說,它們的指令集(Instruction Set)都是採用堆叠运算的方式:执行时的资料都是先放在堆叠中, ...