标签:shell
进程列表
列出进程中最重要的命令便是进程状态命令:ps.
ps命令是进程状态(Process Status)的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令.
要对进程进行检测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态,进程是否结束,进程有没有僵尸,哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到的.
ps为我们提供了进程的一次性(不要给性加重音)的查看,他所提供的查看结果并不动态连续;如果想对进程进行时间监控,应该使用top工具.
kill命令用来杀死进程
Linux上进程有五种状态
1.运行(正在运行或在运行队列中的等待)
2.中断(休眠中,受阻,在等待某个条件的形成或接收到信号)
3.不可中断(收到信号不唤醒和不可运行,进程必须等待直到有中断发生)
4.僵尸(进程已终止,但进程描述符存在,直到父进程调用wait()系统调用后释放)
5.停止(进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行)
ps工具标识进程的物种状态码:
状态码 |
说明 |
D |
不可中断 |
R |
运行 |
S |
中断 |
T |
停止 |
Z |
僵尸 |
ps详解:
1.命令格式:
ps [参数]
2.功能
用来显示当前进程的状态
3.命令参数
参数 |
说明 |
a |
显示所有进程 |
-a |
显示统一终端下的所有程序 |
-A |
显示所有进程 |
c |
显示进程的真实名称 |
-N |
反向选择 |
-e |
等于”-A” |
e |
显示环境变量 |
f |
显示程序间的关系 |
-H |
显示树状结构 |
r |
显示当前中断的进程 |
T |
显示当前终端的所有进程 |
u |
指定用户的所有进程 |
-au |
显示较详细的资讯 |
-aux |
显示所有包含其他使用者的进程 |
-C<命令> |
列出指定命令的状态 |
--lines<行数> |
每页显示的行数 |
--width<字符数> |
每页显示的字符数 |
--help |
显示帮助信息 |
--version |
显示版本信息 |
4.简单的使用
案例1:显示所有进程:
#ps -A
PID TTY TIME CMD
1 ? 00:00:04 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
省略部分结果
案例2:显示指定用户信息:
#ps -u root
PID TTY TIME CMD
1 ? 00:00:04 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
省略部分结果
案例3:显示所有进程信息,连同命令行
#ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 19:45 ? 00:00:04 /sbin/init
root 2 0 0 19:45 ? 00:00:00 [kthreadd]
root 3 2 0 19:45 ? 00:00:00 [migration/0]
root 4 2 0 19:45 ? 00:00:00 [ksoftirqd/0]
省略部分结果
案例4: ps与grep常用组合用法,查找特定进程
命令:
#ps -ef|grep ssh
root 1358 1 0 19:46 ? 00:00:00 /usr/sbin/sshd
root 1650 1358 0 19:47 ? 00:00:00 sshd: root@pts/0
root 3598 1652 0 21:27 pts/0 00:00:00 grep ssh
案例5:将目前属于您自己这次登入的PID与相关信息列出
#ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1652 1650 0 80 0 - 27116 wait pts/0 00:00:00 bash
4 R 0 3600 1652 0 80 0 - 27033 - pts/0 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:所下达的指令为何
在预设的情况下,ps仅会列出与目前所在的bash shell有关的PID而已,所以当我们使用ps -l的时候,只有三个PID.
案例6:列出目前所有的正在内存当中的程序
#ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19356 1612 ? Ss 19:45 0:04 /sbin/init
root 2 0.0 0.0 0 0 ? S 19:45 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 19:45 0:00 [migration/0]
省略部分结果
分析说明:
USER:该process是属于哪个使用者账号的
PID:该process的号码
%CPU:该process使用掉的CPU资源百分比
%MEM:该process所占用的物理内存百分比
VSZ:该process使用掉的虚拟内存量(kb)
RSS:该process占用的固定的内存量(kb)
TTY:该process是在哪个终端机上运行,若与终端机无关,则显示 ? ,另外,tty1-tty6表示本机上的登入者程序,若为pts/0等等,则表示为由网络接进主机的程序.
STAT:该程序目前的状态,主要状态有:R(该程序目前正在运行,或者是可被运行),S(该程序目前正在睡眠中,但可被某些讯号唤醒),T(该程序应该已经终止,但是其父进程却无法正常的终止它,造成僵死程序的状态).
START:该process被触发启动的时间
TIME:该process实际使用CPU运作的时间
COMMAND:该程序的实际命令.
案例7:列出类似程序树的程序显示
#ps -axjf
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 \_ [migration/0]
其他案例:
使用:
#ps -aux|more //实现分页查看
使用:
#ps -aux>test.txt //把所有进程显示出来,并输出到test.txt文件
使用:
#ps -o pid,ppid,pgrp,session,tpgid,comm//输出指定的字段
PID PPID PGRP SESS TPGID COMMAND
1556 1554 1556 1556 1582 bash
1582 1556 1582 1556 1582 ps
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:shell
原文地址:http://blog.csdn.net/shanyongxu/article/details/47100605