linux基础之进程和程序(一)

  • 2019-09-02
  • 0
  • 0

一、基本概述:

通俗点讲,当我们运行一个程序,那么将运行的程序叫做进程。进程是程序在计算机上的一次执行活动。

二、两者主要区别:

  • 进程是动态的,而程序是静态的。
  • 进程具有生命周期能够动态产生和消亡,而程序是永存的。
  • 进程是一个能独立运行的单位,能与其他进程并行活动。

三、进程的属性:

  • 进程ID(PID):是唯一的值,用来区分进程
  • 父进程(PPID)
  • 启动进程的用户ID(UID)和所归属的组(GID)
  • 进程状态:分为运行R,休眠S,僵尸Z
  • 进程执行的优先级
  • 进程所连接的终端名
  • 进程资源占用:如内存、CPU等

四、进程状态的监控

4.1. 进程的几种常见状态。

  • R——可执行状态(处于可运行状态的进程,一旦有机会,就会访问CPU。)
  • S——可中断状态(处于自愿睡眠状态的进程选择处于该状态。通常,这一进程在某事发生之前无事可做。)
  • Z——僵尸进程 (每个快要终止的进程会经历一个短暂的僵尸状态,然而有时有些进程会一直停留在僵尸状态。)
  • D——不可中断进程(一般表示进程正在跟硬件交互,并且交互过程中不允许被其他进程或中断打断。)
  • T——进程被暂停 (表示进程处于暂停或跟踪状态,向一个进程法送SIGSTOP他就会影响这个状态。)

4.2. 进程状态监控的命令:

4.2.1、 top系列(htop、wtop)动态显示系统状况。

top的使用:top [-] [d] [p] [q] [c] [C] [S] [s] [n]

d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。 
p 通过指定监控进程ID来仅仅监控某个进程的状态。 
q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。 
S 指定累计模式 
s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。 
i 使top不显示任何闲置或者僵死进程。 
c 显示整个命令行而不只是显示命令名

窗口命令行删除:

从上往下每行每列的含义:

第一行:
19:47:31    当前时间、
up  5:49    系统启动时间、
1 user      当前系统登录用户数目、平均负载(1分钟,10分钟,15分钟)。
load average: 0.00, 0.02, 0.05 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
平均负载(load average),一般对于单个cpu来说,负载在0~1.00之间是正常的,超过1.00须引起注意。在多核cpu中,系统平均负载不应该高于cpu核心的总数。
第二行:
100 total   进程总数、
1 running   运行进程数、
98 sleeping 休眠进程数、
1 stopped   终止进程数、
0 zombie    僵死进程数。
第三行
0.0 us      用户空间占用cpu百分比;
0.3 sy      内核空间占用cpu百分比;
0.0 ni      用户进程空间内改变过优先级的进程占用cpu百分比;
100.0 id    空闲cpu百分比;
0.0 wa      等待输入输出(I/O)的cpu百分比;
0.0 hi      指的是cpu处理硬件中断的时间;
0.0 si      指的是cpu处理软件中断的时间;
0.0 st      用于有虚拟cpu的情况,用来指被虚拟机偷掉的cpu时间,虚拟机占用百分比。
第四行
995896 total            总的物理内存;
118180 used             使用物理内存大小;
438548 free             空闲物理内存;
439168 buff/cache       用于内核缓存的内存大小
第五行
1048572 total           总的交换空间大小;
0 used                  已经使用交换空间大小;
1048572 free            空间交换空间大小;
439168 buff/cache       缓冲的交换空间大小
buffers于cached区别:buffers指的是块设备的读写缓冲区,cached指的是文件系统本身的页面缓存。他们都是Linux系统底层的机制,为了加速对磁盘的访问。
第六行:
PID: 进程运行的ID号
USER: 启动进程的用户
PR: 优先级,正常为20
NI: 任务nice值,正常为0
VIRT: 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES: 物理内存用量
SHR: 共享内存用量
S: 该进程的状态。其中S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;T代表停止或跟踪状态
%CPU: 该进程自最近一次刷新以来所占用的CPU时间和总时间的百分比
%MEM: 该进程占用的物理内存占总内存的百分比
TIME+: 累计cpu占用时间
COMMAND 该进程的命令名称,如果一行显示不下,则会进行截取。内存中的进程会有一个完整的命令行

更改显示列表内容:

更改显示内容通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定
按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。


4.2.2、 ps静态显示系统状况。

PS常用的命令:ps -ef或者ps aux


ps -ef:


其中各列的含义为:

UID     //用户ID、但输出的是用户名 
PID     //进程的ID 
PPID    //父进程ID 
C       //进程占用CPU的百分比 
STIME   //进程启动到现在的时间 
TTY     //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。 
CMD     //命令的名称和参数

ps aux 或者ps -aux:


其中各列的含义:

USER:   该进程属于那个使用者。
PID :   该进程的进程ID号。
%CPU:   该进程使用掉的 CPU 资源百分比;
%MEM:   该进程所占用的物理内存百分比;
VSZ :   该进程使用掉的虚拟内存量 (Kbytes)
RSS :   该进程占用的固定的内存量 (Kbytes)
TTY :   该进程是在那个终端机上面运作,若与终端机无关,则显示 ?。另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:   该进程的状态
START:  该进程被触发启动时间 
TIME:   该进程实际使用CPU运行的时间

其中STAT的状态有以下几种:

D       无法中断的休眠状态(通常 IO 的进程); 
R       正在运行可中在队列中可过行的; 
S       处于休眠状态; 
T       停止或被追踪; 
W       进入内存交换 (从内核2.6开始无效); 
X       死掉的进程 (基本很少见); 
Z       僵尸进程; 
<        优先级高的进程 
N       优先级较低的进程 
L       有些页被锁进内存; 
s       进程的领导者(在它之下有子进程); 
l       多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads); 
+       位于后台的进程组;

评论

还没有任何评论,你来说两句吧

提供支持 - 友情链接 - 衫小寨