在linux系统当中:触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,称为PID,同时依据触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设置。
进程的相关知识:
1、进程与程序概念的区分:
程序:程序是静态的文件,通常为二进制程序放置在存储媒介中(如硬盘、光盘、软盘、磁带等),以物理文件的形式存在。例如:/etc/init.d/httpd 本身是一个软件代码
进程:进程是动态的,是运行着的程序。程序被触发执行后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载到内存中,操作系统并给予这个内存内的单元一个标识符(PID),可以说,进程就是一个正在运行中的程序。例如:如果启动/etc/init.d/httpd start 会产生对应的进程,是动态概念。注意:程序和进程无一一对应关系。一个程序可以由多个进程共用;另一个方面,一个进程在活动中有可顺序地执行若干个程序。
2、子进程和父进程:
PPID就是父进程的PID;从上面可以看出,后一个的进程的父进程就是一个的进程号,子进程由有一个进程所产生的进程,产生这个子进程的进程成为父进程;在linux系统中,使用系统调用fork创建进程(创建进程)。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境,使得子进程实现了继承;当父进程终止子进程自然终止(如果父进程终止,而子进程没有终止,则子进程变成孤儿进程,其父进程会自动指向init进程;如果子进程终止,而父进程不知道,则子进程会变成僵尸进程)
进程的查看:
1、进程查看ps指令:
常用选项:
a 显示所有用户的进程
x 通常与a参数一起用,可列出完整的信息
e 显示所有进程,包括没有控制终端的进程
L 长格式显示
常用命令:
ps 查看隶属于自己的进程
ps -u or -l 查看隶属于自己进程详细信息
ps -le or aux 查看所有用户执行的进程的详细信息
ps aux 查看系统所有的进程数据;
USER 该进程属于哪个用户账号的
PID 该进程的进程标识符
%CPU 该进程使用掉的cpu资源百分比
%MEM 该进程所占用的物理内存百分比
VSZ 该进程使用掉的虚拟内存量(KB)
RSS 该进程占用的真实的内存量
TTY 该进程是在哪个终端机上面运行,若与终端机无关,则显示?另外,tty1-tty6是本机上面的登陆者程序,若为pts/0等的,则表示为由网络连接进主机的进程。
STAT 该进程目前的状态,状态和底下分类一样,至于后边加的,表示的意义。
< 高优先级的
N 低优先级的
L 有内存分页但是带锁
小写s 包含子进程
小写l 多线程
+ 前台程序,前台和它交互的程序()
START 该进程被触发启动的时间
TIME 该进程实际使用CPU运行的时间
COMMAND 该进程的实际命令
Ps -l 仅查看自己的bash相关进程
F 进程标志 4 此进程的权限为root
1 此进程仅可进行复制(fork)而无法被执行(exec)
S 进程状态 R:该进程正在运行中
S:该进程目前正在睡眠状态(idle),但可以被唤醒(signal)
D: 不可被唤醒的睡眠状态,通常这个进程可能在等待I/O的情况(ex>打印)
T:停止状态,stop,可能是在工作控制(后台暂停)或除错(traced)状态
Z:“僵尸”状态,进程已经终止但却无法被删除至内存外
(注意:比如 ctrl+z 就是stop一个进程,ctrl-c是发送SIGINT,终止一个进程,Ctrl-z 是发送SIGSTOP信号,挂起一个进程)
UID/PID/PPID 代表此进程被该UID所拥有/进程的PID号码/此进程的父进程PID号码
C CPU使用率,单位为百分比
PRI/NI 代表此进程被CPU所执行的优先级。数值越小代表该进程越快被CPU执行
ADDR/SZ/WCHAN 都与内存有关,ADDR表示该进程在内存的哪个部分,如果是running的进程,一般会显示”-“,SZ表示此进程用掉多少内存;WCHAN表示目前进程是否运行中,同样,若是-表示正在运行中
TTY 登陆者的终端机位置,若为远程登陆则使用动态终端接口(pts/n)
TIME 使用掉的CPU的时间,注意,是此进程实际花费CPU运行的时间,而不是系统时间
CMD 造成此程序的触发进程的命令为何用途
列出占有CPU最多的10个进程:ps -eo comm,pcpu --sort -pcpu | head
2、top动态查看进程的变化:
Top也是程序查看工具,但是不同于ps是静态的结果输出,top这个程序可以持续检测整个系统的进程工作状态。
05:49:43 目前的时间
up 14 min 开机到目前为止所经过的时间
2 user 已经登陆系统的用户人数
load average:0.00,0.03,0.06 系统的平均工作负荷
Task:130 total 进程总数 (后面依次为状态的数量)
1 running 正在运行的进程数
129sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
%Cpu(s): 系统用户进程使用CPU百分比,%CPU是每个核的CPU占用率之和算出来的
mem 物理内存
swap 虚拟内存交换区
注:Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行 的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从 Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。其实,Swap的调整对Linux服务器,特别是Web服务器 的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID:进程ID
USER:进程所属的用户
PR:Priority的简写,进程的优先执行顺序,越小越早被执行
NI:Nice的简写,与priority有关,也是越早越被执行
VIRT:进程使用的虚拟内存总量
RES:进程使用的、未被使出的物理内存大小
SHR:共享内存大小
%CPU:CPU的使用率
%MEM:内存的使用率
TIME+:CPU使用时间的累加
COMMAND:命令行
在top执行的过程中,可以使用以下按键命令:?显示在top当中可以输入的按键命令
P 以CPU的使用资源排序显示
M 以内存的使用资源排序显示
N 以PID来排序
T 由该进程使用的cpu时间累积(TIME+)排序
小写k 给予某个PID一个信号
小写r 给予某个PID重新定义一个nice值
小写q 离开top软件的按键
pstree查看各进程间的关系:由pstree输出可以清楚的知道,所有的进程都是依附在init这个进程下面,这个进程的id号是1,是由linux内核所主动调用的第一个进程。如果子进程挂掉或是老是杀不掉子进程时,就可以用pstree来找到父进程来杀掉!进程是贯穿了整个操作系统,以上便是对 ps top 指令的一些个人总结,有不足的地方欢迎大家批评指正~