什么是进程?

进程表示程序的一次执行过程,它是应用程序的运行实例,是一个动态的过程。或者可以更简单地描述为:进程是操作系统当前运行的程序。当一个进程开始运行时,就要启动了这个过程。进程包括动态的执行的程序和数据两部分。现代操作系统支持多进程处理,这些进程可以接受操作系统的调度,所以说每一个进程都是操作系统进程资源调度和分配的一个独立的单位。

所有进程都可能存在三种状态:运行态,就绪态,阻塞态。

运行态表示程序当前实际占用着的CPU资源;

就绪态是指程序除CPU之外的一切运行资源都已经就绪,等待操作系统分配CPU资源,只要分配了CPU资源名,即可立即运行;

阻塞态是指程序在运行的过程中由于需要请求外部资源(例如I/O资源、打印机等低速的或同一时刻只能独享的资源)而当前无法继续执行,从而主动放弃当前CPU资源转而等待所请求的资源。

进程之间又存在互斥和同步的关系。互斥也就是说进程间不能同时运行,必须等待一个进程运行完毕,另一个进程才能运行,比如说不可能有两个进程同时使用同一步打印机打印文件。而进程同步指的是进程间通过某种通信机制实现信息交互。现代计算机使用的信号量机制来实现进程间的互斥和同步,它的基本原理是:两个或者多个进程可以通过简单的信号进行合作,一个进程可以被迫在某一位置停止,直到它接受到一个特定的信号。任何复杂的合作需求都可以通过适当的信号结构得到满足。

进程和程序的区别?

程序是一系列动作执行过程的描述,是指令的有序结合,是一个静态的概念;

进程是动态的,进程是程序以及数据在计算机上的一次执行,没有静态的程序也就没有动态的执行。

程序是可以以某种形式保存在存储介质上的,而进程只能在运行时存在于计算机的内存中。

以现实生活为例,如果说做一件事情需要经过很多既定的步骤,这些步骤可以被写成清单静态地列在纸上,那么它们就是广义上的”程序“,而只有真正开始将计划的步骤付诸实施的过程才是”进程“。

ps是一款非常强大的进程查看工具。

该命令语法如下:

ps 参数

-A 列出所有的进程和-e是一样的效果

-a 列出不和本终端有关的所有进程

-w显示加宽可以显示较多的信息

-u 显示有效使用者相关的进程

-aux显示所有包含其他使用者的进程

使用aux参数的输出:

#USER:进程拥有者

#PID:pid

#%CPU:占用的CPU使用率

#%MEM:占用的内存使用率

#VSZ:占用的虚拟内存大小

#RSS:占用的内存大小

#TTY:运行的终端的号码

#STAT:进程状态:

#D:不可中断

 #R:运行中

 #S:休眠

#T:暂停

#Z:僵尸进程

#W:没有足够的内存可分配

#<:高优先级的行程

#N:低优先级的行程

#START:进程开始时间

#TIME:累计使用CPU的时间

#COMMAND:执行的命令

top - 19:10:55 up 2 days, 11:00,  2 users,  load average: 0.00, 0.00, 0.00
Tasks:  30 total,   1 running,  29 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    524288k total,   114120k used,   410168k free,        0k buffers
Swap:    65536k total,    65536k used,        0k free,    61584k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                               
22172 root      20   0  136m  364  236 S  0.3  0.1   2:22.08 redis-server                                                                           
    1 root      20   0 19208  376  264 S  0.0  0.1   0:01.61 init                                                                                   
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd/213                                                                           
    3 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper/213                                                                            
  113 root      16  -4 10644    4    0 S  0.0  0.0   0:00.00 udevd                                                                                  
  458 root      20   0  180m  676  432 S  0.0  0.1   0:13.05 rsyslogd                                                                               
  490 root      20   0 22080    4    0 S  0.0  0.0   0:00.00 xinetd                                                                                 
  497 root      20   0 64232    4    0 S  0.0  0.0   0:00.00 saslauthd                                                                              
  498 root      20   0 64232    4    0 S  0.0  0.0   0:00.00 saslauthd                                                                              
  530 root      20   0 80300  444  280 S  0.0  0.1   0:03.73 sendmail                                                                               
  553 smmsp     20   0 76028  392  260 S  0.0  0.1   0:00.03 sendmail                                                                               
  569 root      20   0  114m  324  244 S  0.0  0.1   0:00.51 crond                                                                                  
  576 root      20   0  4052    4    0 S  0.0  0.0   0:00.00 mingetty                                                                               
  577 root      20   0  4052    4    0 S  0.0  0.0   0:00.00 mingetty                                                                               
 4501 root      20   0 42420   12    0 S  0.0  0.0   0:00.00 nginx                                                                                  
 4502 nobody    20   0 42852  156   88 S  0.0  0.0   0:09.16 nginx

第一行是服务器的基本信息,包括命令刷新时间

第二行是当前系统进程概括

第三行是CPU信息

第四行物理内存的使用状态

第五行是虚拟机内存的使用状态

再往下的所有信息就是动态进程的信息。

PID:进程的ID  

USER:进程的所有者

PR:进程优先级

NI:nice值,负值表示高优先级,正值表示低优先级

VIRT:进程使用的虚拟内存总量,单位为Kb,VIRT=SWAP+RES

RES:进程使用的未被换出的物理内存大小,单位为Kb,RES=CODE+DATA

SHR:共享内存大小,单位为Kb

%CPU:上次更新到现在的CPU时间占用百分比

%MEM:进程使用的物理内存百分比

TIME+:进程使用得到CPU时间总计,单位为1/100秒

COMMAND:进程的名称

杀死进程可以使用命令:kill 进程id 或 kill -9 进程id

(之所以-9是因为有些进程单单kill是杀不死的,使用-9表示强制)

查看指定进程可使用该命令: ps -ef|grep 进程名

例如:ps -ef | grep tomcat

killall 进程名 使用该命令可以防止看错或者输错PID而导致的麻烦

Linux系统学习之进程管理的更多相关文章

  1. linux 系统监控和进程管理

    1.命令top,查看cpu和内存使用,主要进程列表和占用资源. 2.内存使用命令foree -g 3.查询所有java进程:pgrep -l java     ------ps aux|grep .j ...

  2. linux内核学习之进程管理------task_struct结构体

    struct task_struct { volatile long state;    /* -1 unrunnable, 0 runnable, >0 stopped */ struct t ...

  3. Linux学习之进程管理(十九)

    Linux学习之进程管理 进程查看 查看系统中所有进程,使用BSD操作系统的格式 语法:ps aux 选项: a:显示所有前台进程 x:显示所有后台进程 u:显示这个进程是由哪个用户产生的 语法:ps ...

  4. Linux系统学习笔记:文件I/O

    Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...

  5. Linux 源码阅读 进程管理

    Linux 源码阅读 进程管理 版本:2.6.24 1.准备知识 1.1 Linux系统中,进程是最小的调度单位: 1.2 PCB数据结构:task_struct (Location:linux-2. ...

  6. linux 的服务与进程管理(二)

    2.linux 的服务与进程管理 [2.1]系统启动流程 简单的介绍下linux的系统启动流程,方便我们深入了解linux操作系统,对排除linux系统故障进行帮助.启动流程虽然简单但背后还有着更加复 ...

  7. Linux零起点之进程管理----c语言编程

    进程 (Process)是指操作系统中被加载到内存中的.正在运行的应用程序实例.进程是系统资源分配的基本单元,在其生命周期内会使用系统中的各种资源.进程主要由程序.数据以及进程控制快(PCB)3个部分 ...

  8. Linux 系统中僵尸进程

    Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动.僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸.配图源 ...

  9. Unix/Linux系统中僵尸进程是如何产生的?有什么危害?如何避免?

    如题 Unix/Linux系统中僵尸进程是如何产生的?有什么危害?如何避免? 一个进程在调用exit命令结束自己的生命的时候,其实他并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结 ...

随机推荐

  1. Nullable<System.DateTime>日期格式转换 (转载)

    一.问题 1.html页面中时间显示出错,数据库中时间是正确的. 原因:没有把DateTime转成String类型. 2.  在C#中,发现不能直接使用ToString("yyyy-MM-d ...

  2. Java并发编程:Java创建线程的三种方式

    目录 引言 创建线程的三种方式 一.继承Thread类 二.实现Runnable接口 三.使用Callable和Future创建线程 三种方式的对比 引言 在日常开发工作中,多线程开发可以说是必备技能 ...

  3. Tests of the Equality of Two Means

    Introduction In this lesson, we'll continue our investigation of hypothesis testing. In this case, w ...

  4. c++ cmath头文件

    一.前言 c++的一个头文件. 二.常用方法 1. ceil() 定义: c++11 double ceil (double x); float ceil (float x); long double ...

  5. 网络基础 Windows控制台下Ftp使用简介

    Windows控制台下Ftp使用简介 by:授客 QQ:1033553122 测试环境: ftp服务器所在主机ip:172.25.75.2 ftp用户目录:F:\ftp   C:\Users\laif ...

  6. android 保存图片,及将图片更新到图库

    **保存图片 public static File saveImage(Bitmap bmp) { File appDir = new File(Environment.getExternalStor ...

  7. long数值 转换为时间

    项目中,服务器端经常给客户端开发人员传一个长整形的时间数据, 对于一个 长整形 1446801883000,可以明显的看出 是以毫秒为单位的,因为最后有三个零,如果没有连续3个零的话就要判断单位了 那 ...

  8. SEIG Modbus 3.4 CVE-2013-0662 漏洞分析与利用

    前言 Schneider Electric Modbus Serial Driver 会监听 27700 端口,程序在处理客户端发送的数据时会导致栈溢出. 测试环境: windows xp sp3 相 ...

  9. python 遇到的小坑

    由于前端资源紧缺,我的后端系统迟迟等不来它的前端,没办法只好自己来写了.从html,js入门学起,然后照着vue.js的官方教程写了几个实例,从github上clone了一个不错的vue.js模版,填 ...

  10. python常用模块json

    python jons模块 json模块 主要是解决数据格式的转换问题,比如python接收到json对象需要转换为python对象,供python处理,亦或者python数据需要发送到其给其他客户端 ...