工作之命令小总结(1):ps命令
2013-11-24 23:09
260 查看
linux的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程的信息需要使用top命令。
若要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、那些进程占用过多的资源等等。
linux上进程有五种状态:
1、运行(正在运行或运行队列中等待)
2、中断(休眠中、受阻、在等待某个信号条件的形成)
3、不可中断(收到信号不唤醒和不可运行,进程必须等待)
4、僵死(进程已终止,但进程描述符存在)
5、停止(进程停止运行)
ps工具标识进程的五种状态码:
R:运行 runnable
S:中断 slepping
D:不可中断 uninterruptible sleep
T:停止 stopped
Z:僵死zombie
名称:
PS
功能:
报告程序状况用法:
ps[-aAcdefHjlmNVwy][acefhgLnrsSTuvxX][-C<指令名称>][-g<群组名称>][-G<群组号码>][-p<程序识别码>][p<程序识别码>][-s<阶段作业>][-t<终端机编号>][t<终端机号码>][-u<用户识别码>][-U<用户识别码>][U<用户名称>][-<程序识别码>][--cols<每行字符数>][--columns<每列字符数>][--cumulative][--deselect][--forest][--headers][--help][--info][--lines<显示列数>][--no-headers][--group<群组名称>][-Group<群组识别码>][--pid<程序识别码>][--rows<显示列数>][--sid<阶段作业>][--tty<终端机编码>][--user<用户名称>][--User<用户识别码>][--version][--width<每列字符数>]
参数:
-a 显示所有终端机下执行的程序,除了阶段作业领导者之外。
a 显示现行终端机下的所有程序,包括其他用户的程序。
-A 显示所有程序。
-c 显示CLS和PRI栏位。
c 列出程序时,显示每个程序真正的指令名称,而不包含路径、参数或常驻服务的标示。
-C<指令名称> 指定执行指令的名称,并列出该指令的程序的状况。
-d 显示所有程序,但不包含阶段作业领导者程序。
-e 此参数的效果和指定‘A’参数相同。
e 列出程序时,显示每个程序所使用的环境变量。
-f 用ASCII字符显示树状结构,表达程序间的相互关系。
-g<群组名称> 此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定。
g 显示现行终端机下的所有程序,包含群组领导者的程序。
-G<群组识别码> 列出属于该群组的程序的状况,也可使用群组名称来指定。
h 不显示标题列。
-H 显示树状结构,表示程序间的相互关系。
-j或j 采用工作控制的格式显示程序状况。
-l或l 采用详细的格式来显示程序状况。
L 列出栏位的相关信息。
-m或m 显示所有的执行者。
n 以数字来表示USER和WCHAN栏位。
-N 显示所有的程序,除了执行ps指令终端机下的程序之外。
-p<程序识别码> 指定程序识别码,并列出改程序的状况。
p<程序识别码> 此参数的效果和指定的"-p"参数相同,只在列表格式方面稍有差异。
r 只列出现行终端机正在执行中的程序。
-s<阶段作业> 指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。
s 采用程序信号的格式显示程序状况。
S 列出程序时,包含已中断的子程序资料。
-t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
t<终端机编号> 此参数的效果和指定的"-t"参数相同,只在列表格式方面稍有差异。
-T 显示现行终端机下的所有程序。
-u<用户标识码> 此参数的效果和指定的"-U"参数相同。
u 以用户为主的格式显示程序状况。
-U<用户标识码> 列出属于该用户的程序的状况,也可以使用用户名称来指定。
U<用户名称> 列出属于该用户的程序的状况。
v 采用虚拟内存的格式显示程序状况。
-V或V 显示版本信息。
-w或w 采用宽阔的格式来显示程序状况。
x 显示所有的程序,不以终端机来区分。
X 采用旧式的linux i386登陆格式显示程序状况。
-y 配合参数”-l“使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位。
-<程序识别码> 此参数的效果和指定的"p"参数相同。
--cols<每行字符数> 设置没列的最大字符数。
--headers 重复显示标题列。
--help 在线帮忙。
--info 显示排错信息。
--lines<显示列数> 设置显示画面的列数。
范例:
ps:
各相关信息的意义:
F 代表这个程序的旗标 (flag), 4 代表使用者为 super user(超级用户)
S 代表这个程序的状态 (STAT)
UID 程序被该 UID 所拥有
PID 就是这个程序的 ID !
PPID 则是其上级父程序的ID
C CPU使用的资源百分比
PRI 这个是 Priority (优先执行序) 的缩写
NI 这个是Nice值
ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"
SZ 使用掉的内存大小
WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作
TTY 登入者的终端机位置
TIME 使用掉的 CPU 时间。
CMD 下达的指令
列出目前所有的正在内存当中程序:
PID 该进程的号
%CPU 该进程使用掉的 CPU 资源百分比
%MEM 该进程所占用的物理内存百分比
VSZ 该进程使用掉的虚拟内存量(KB)
RSS 该进程占用的固定的内存量(KB)
TTY 该进程是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT 该程序目前的状态,主要的状态有
R 该程序目前正在运作,或者是可被运作
S 该程序目前正在睡眠当中,但可被某些讯号唤醒。
T 该程序目前正在侦测或者是停止了
Z 该程序应该已经终止,但是其父程序却无法正常的终止他,造成僵死程序的状态
START 该进程被触发启动的时间
TIME 该进程实际使用CPU运作的时间
COMMAND 该程序的实际指令
与其他函数联系使用:
ps是用来报告程序执行状况的指令,可以搭配kill指令随时中断,删除不必要的程序。
更多关于kill指令的介绍请关注下篇博文。
若要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、那些进程占用过多的资源等等。
linux上进程有五种状态:
1、运行(正在运行或运行队列中等待)
2、中断(休眠中、受阻、在等待某个信号条件的形成)
3、不可中断(收到信号不唤醒和不可运行,进程必须等待)
4、僵死(进程已终止,但进程描述符存在)
5、停止(进程停止运行)
ps工具标识进程的五种状态码:
R:运行 runnable
S:中断 slepping
D:不可中断 uninterruptible sleep
T:停止 stopped
Z:僵死zombie
名称:
PS
功能:
报告程序状况用法:
ps[-aAcdefHjlmNVwy][acefhgLnrsSTuvxX][-C<指令名称>][-g<群组名称>][-G<群组号码>][-p<程序识别码>][p<程序识别码>][-s<阶段作业>][-t<终端机编号>][t<终端机号码>][-u<用户识别码>][-U<用户识别码>][U<用户名称>][-<程序识别码>][--cols<每行字符数>][--columns<每列字符数>][--cumulative][--deselect][--forest][--headers][--help][--info][--lines<显示列数>][--no-headers][--group<群组名称>][-Group<群组识别码>][--pid<程序识别码>][--rows<显示列数>][--sid<阶段作业>][--tty<终端机编码>][--user<用户名称>][--User<用户识别码>][--version][--width<每列字符数>]
参数:
-a 显示所有终端机下执行的程序,除了阶段作业领导者之外。
a 显示现行终端机下的所有程序,包括其他用户的程序。
-A 显示所有程序。
-c 显示CLS和PRI栏位。
c 列出程序时,显示每个程序真正的指令名称,而不包含路径、参数或常驻服务的标示。
-C<指令名称> 指定执行指令的名称,并列出该指令的程序的状况。
-d 显示所有程序,但不包含阶段作业领导者程序。
-e 此参数的效果和指定‘A’参数相同。
e 列出程序时,显示每个程序所使用的环境变量。
-f 用ASCII字符显示树状结构,表达程序间的相互关系。
-g<群组名称> 此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定。
g 显示现行终端机下的所有程序,包含群组领导者的程序。
-G<群组识别码> 列出属于该群组的程序的状况,也可使用群组名称来指定。
h 不显示标题列。
-H 显示树状结构,表示程序间的相互关系。
-j或j 采用工作控制的格式显示程序状况。
-l或l 采用详细的格式来显示程序状况。
L 列出栏位的相关信息。
-m或m 显示所有的执行者。
n 以数字来表示USER和WCHAN栏位。
-N 显示所有的程序,除了执行ps指令终端机下的程序之外。
-p<程序识别码> 指定程序识别码,并列出改程序的状况。
p<程序识别码> 此参数的效果和指定的"-p"参数相同,只在列表格式方面稍有差异。
r 只列出现行终端机正在执行中的程序。
-s<阶段作业> 指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。
s 采用程序信号的格式显示程序状况。
S 列出程序时,包含已中断的子程序资料。
-t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
t<终端机编号> 此参数的效果和指定的"-t"参数相同,只在列表格式方面稍有差异。
-T 显示现行终端机下的所有程序。
-u<用户标识码> 此参数的效果和指定的"-U"参数相同。
u 以用户为主的格式显示程序状况。
-U<用户标识码> 列出属于该用户的程序的状况,也可以使用用户名称来指定。
U<用户名称> 列出属于该用户的程序的状况。
v 采用虚拟内存的格式显示程序状况。
-V或V 显示版本信息。
-w或w 采用宽阔的格式来显示程序状况。
x 显示所有的程序,不以终端机来区分。
X 采用旧式的linux i386登陆格式显示程序状况。
-y 配合参数”-l“使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位。
-<程序识别码> 此参数的效果和指定的"p"参数相同。
--cols<每行字符数> 设置没列的最大字符数。
--headers 重复显示标题列。
--help 在线帮忙。
--info 显示排错信息。
--lines<显示列数> 设置显示画面的列数。
范例:
ps:
[root@qiufengsong ~]# ps PID TTY TIME CMD 3414 pts/1 00:00:00 bash 3431 pts/1 00:00:00 ps显示所有进程信息:
[root@qiufengsong ~]# ps -A PID TTY TIME CMD 1 ? 00:00:02 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 kworker/u:0 6 ? 00:00:01 migration/0 7 ? 00:00:00 watchdog/0 8 ? 00:00:00 migration/1 10 ? 00:00:00 ksoftirqd/1 11 ? 00:00:00 watchdog/1 12 ? 00:00:00 cpuset 13 ? 00:00:00 khelper 14 ? 00:00:00 kdevtmpfs 15 ? 00:00:00 netns 16 ? 00:00:00 xenwatch 17 ? 00:00:00 xenbus 18 ? 00:00:00 sync_supers 19 ? 00:00:00 bdi-default 20 ? 00:00:00 kintegrityd 21 ? 00:00:00 kblockd 22 ? 00:00:00 ata_sff 23 ? 00:00:00 khubd 24 ? 00:00:00 md 26 ? 00:00:00 khungtaskd 27 ? 00:00:03 kswapd0 28 ? 00:00:00 ksmd 29 ? 00:00:00 fsnotify_mark 30 ? 00:00:00 crypto ##########省略部分########## [root@qiufengsong ~]# ps -e PID TTY TIME CMD 1 ? 00:00:02 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 kworker/u:0 6 ? 00:00:01 migration/0 7 ? 00:00:00 watchdog/0 8 ? 00:00:00 migration/1 10 ? 00:00:00 ksoftirqd/1 11 ? 00:00:00 watchdog/1 12 ? 00:00:00 cpuset 13 ? 00:00:00 khelper 14 ? 00:00:00 kdevtmpfs 15 ? 00:00:00 netns 16 ? 00:00:00 xenwatch 17 ? 00:00:00 xenbus 18 ? 00:00:00 sync_supers 19 ? 00:00:00 bdi-default 20 ? 00:00:00 kintegrityd显示指定用户的进程信息
[root@qiufengsong ~]# ps -u root PID TTY TIME CMD 1 ? 00:00:02 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 kworker/u:0 6 ? 00:00:01 migration/0 7 ? 00:00:00 watchdog/0 8 ? 00:00:00 migration/1 10 ? 00:00:00 ksoftirqd/1 11 ? 00:00:00 watchdog/1 12 ? 00:00:00 cpuset 13 ? 00:00:00 khelper 14 ? 00:00:00 kdevtmpfs 15 ? 00:00:00 netns [root@qiufengsong ~]# ps --user root PID TTY TIME CMD 1 ? 00:00:02 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 kworker/u:0 6 ? 00:00:01 migration/0 7 ? 00:00:00 watchdog/0 8 ? 00:00:00 migration/1 10 ? 00:00:00 ksoftirqd/1 11 ? 00:00:00 watchdog/1 12 ? 00:00:00 cpuset 13 ? 00:00:00 khelper 14 ? 00:00:00 kdevtmpfs 15 ? 00:00:00 netns详细显示程序的状况:
[root@qiufengsong ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 3543 3538 0 80 0 - 27086 wait pts/3 00:00:00 bash 0 R 0 3559 3543 0 80 0 - 27031 - pts/3 00:00:00 ps [root@qiufengsong ~]# ps -ly S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD S 0 3543 3538 0 80 0 1876 27086 wait pts/3 00:00:00 bash R 0 3565 3543 0 80 0 912 27031 - pts/3 00:00:00 ps
各相关信息的意义:
F 代表这个程序的旗标 (flag), 4 代表使用者为 super user(超级用户)
S 代表这个程序的状态 (STAT)
UID 程序被该 UID 所拥有
PID 就是这个程序的 ID !
PPID 则是其上级父程序的ID
C CPU使用的资源百分比
PRI 这个是 Priority (优先执行序) 的缩写
NI 这个是Nice值
ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"
SZ 使用掉的内存大小
WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作
TTY 登入者的终端机位置
TIME 使用掉的 CPU 时间。
CMD 下达的指令
列出目前所有的正在内存当中程序:
[root@qiufengsong ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 19276 1508 ? Ss 05:02 0:02 /sbin/init root 2 0.0 0.0 0 0 ? S 05:02 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 05:02 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S 05:02 0:00 [kworker/u:0] root 6 0.0 0.0 0 0 ? S 05:02 0:01 [migration/0] root 7 0.0 0.0 0 0 ? S 05:02 0:00 [watchdog/0] root 8 0.0 0.0 0 0 ? S 05:02 0:00 [migration/1] root 10 0.0 0.0 0 0 ? S 05:02 0:00 [ksoftirqd/1] root 11 0.0 0.0 0 0 ? S 05:02 0:00 [watchdog/1] root 12 0.0 0.0 0 0 ? S< 05:02 0:00 [cpuset] root 13 0.0 0.0 0 0 ? S< 05:02 0:00 [khelper] root 14 0.0 0.0 0 0 ? S 05:02 0:00 [kdevtmpfs] root 15 0.0 0.0 0 0 ? S< 05:02 0:00 [netns] root 16 0.0 0.0 0 0 ? S 05:02 0:00 [xenwatch] root 17 0.0 0.0 0 0 ? S 05:02 0:00 [xenbus] root 18 0.0 0.0 0 0 ? S 05:02 0:00 [sync_supers] root 19 0.0 0.0 0 0 ? S 05:02 0:00 [bdi-default] root 20 0.0 0.0 0 0 ? S< 05:02 0:00 [kintegrityd] root 21 0.0 0.0 0 0 ? S< 05:02 0:00 [kblockd] ####通常与grep联合使用查找特定进程#### [root@qiufengsong ~]# ps aux | grep ssh root 1090 0.0 0.2 64164 1196 ? Ss 05:03 0:00 /usr/sbin/sshd root 1513 0.2 0.9 98016 4048 ? Ss 05:05 0:16 sshd: root@pts/0 root 3410 0.0 0.9 97908 3880 ? Ss 06:16 0:00 sshd: root@pts/1 root 3437 0.1 0.9 98052 3876 ? Ss 06:23 0:01 sshd: root@pts/2 root 3538 0.0 0.9 97908 3880 ? Ss 06:26 0:00 sshd: root@pts/3 root 3597 0.4 0.9 97908 3880 ? Ss 06:35 0:00 sshd: root@pts/4 root 3630 0.0 0.2 103288 832 pts/3 S+ 06:37 0:00 grep sshUSER 该进程属于那个使用者账号的
PID 该进程的号
%CPU 该进程使用掉的 CPU 资源百分比
%MEM 该进程所占用的物理内存百分比
VSZ 该进程使用掉的虚拟内存量(KB)
RSS 该进程占用的固定的内存量(KB)
TTY 该进程是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT 该程序目前的状态,主要的状态有
R 该程序目前正在运作,或者是可被运作
S 该程序目前正在睡眠当中,但可被某些讯号唤醒。
T 该程序目前正在侦测或者是停止了
Z 该程序应该已经终止,但是其父程序却无法正常的终止他,造成僵死程序的状态
START 该进程被触发启动的时间
TIME 该进程实际使用CPU运作的时间
COMMAND 该程序的实际指令
与其他函数联系使用:
[root@qiufengsong ~]# ps aux | grep ssh root 1483 0.0 0.2 64164 1152 ? Ss 06:41 0:00 /usr/sbin/sshd root 1737 3.4 0.9 97908 3876 ? Ss 06:41 0:01 sshd: root@pts/1 root 1927 0.0 0.2 103288 832 pts/1 S+ 06:42 0:00 grep ssh [root@qiufengsong ~]# ps aux | grep ssh | wc -l 3说明:
ps是用来报告程序执行状况的指令,可以搭配kill指令随时中断,删除不必要的程序。
更多关于kill指令的介绍请关注下篇博文。
相关文章推荐
- Git 工作用到命令总结(不定时添加)
- Linux总结----PS命令
- 工作中常用Linux命令总结
- 工作中总结的linux命令应用技巧(会持续更新)
- Liunx命令工作总结(2)
- Liunx命令工作总结(2)
- linux工作进程状态显示-------ps命令
- Linux命令工作总结-对自己有用
- 工作之命令小总结(6):killall命令
- 10个常用的ps命令总结,参数
- 工作中常用 Git 命令的总结
- shell命令工作总结
- 是时候该总结下自己工作常用的linux命令了
- 工作之命令小总结(5):ss命令
- 10个常用的ps命令总结,参数
- 总结工作中常用到的linux命令
- 工作中linux常用命令总结
- Linux系统中10个常用的ps命令总结
- 工作中Linux 命令现总结
- 日常工作总结(常用命令一)