Linux系统学习之进程管理
什么是进程?
进程表示程序的一次执行过程,它是应用程序的运行实例,是一个动态的过程。或者可以更简单地描述为:进程是操作系统当前运行的程序。当一个进程开始运行时,就要启动了这个过程。进程包括动态的执行的程序和数据两部分。现代操作系统支持多进程处理,这些进程可以接受操作系统的调度,所以说每一个进程都是操作系统进程资源调度和分配的一个独立的单位。
所有进程都可能存在三种状态:运行态,就绪态,阻塞态。
运行态表示程序当前实际占用着的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系统学习之进程管理的更多相关文章
- linux 系统监控和进程管理
1.命令top,查看cpu和内存使用,主要进程列表和占用资源. 2.内存使用命令foree -g 3.查询所有java进程:pgrep -l java ------ps aux|grep .j ...
- linux内核学习之进程管理------task_struct结构体
struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ struct t ...
- Linux学习之进程管理(十九)
Linux学习之进程管理 进程查看 查看系统中所有进程,使用BSD操作系统的格式 语法:ps aux 选项: a:显示所有前台进程 x:显示所有后台进程 u:显示这个进程是由哪个用户产生的 语法:ps ...
- Linux系统学习笔记:文件I/O
Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...
- Linux 源码阅读 进程管理
Linux 源码阅读 进程管理 版本:2.6.24 1.准备知识 1.1 Linux系统中,进程是最小的调度单位: 1.2 PCB数据结构:task_struct (Location:linux-2. ...
- linux 的服务与进程管理(二)
2.linux 的服务与进程管理 [2.1]系统启动流程 简单的介绍下linux的系统启动流程,方便我们深入了解linux操作系统,对排除linux系统故障进行帮助.启动流程虽然简单但背后还有着更加复 ...
- Linux零起点之进程管理----c语言编程
进程 (Process)是指操作系统中被加载到内存中的.正在运行的应用程序实例.进程是系统资源分配的基本单元,在其生命周期内会使用系统中的各种资源.进程主要由程序.数据以及进程控制快(PCB)3个部分 ...
- Linux 系统中僵尸进程
Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动.僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸.配图源 ...
- Unix/Linux系统中僵尸进程是如何产生的?有什么危害?如何避免?
如题 Unix/Linux系统中僵尸进程是如何产生的?有什么危害?如何避免? 一个进程在调用exit命令结束自己的生命的时候,其实他并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结 ...
随机推荐
- 【Java深入研究】2、JDK 1.8 LinkedList源码解析
LinkedList是一个实现了List接口和Deque接口的双端链表. 有关索引的操作可能从链表头开始遍历到链表尾部,也可能从尾部遍历到链表头部,这取决于看索引更靠近哪一端. LinkedList不 ...
- SQLite 的 CodeFirst 模式
目录 问题描述 解决方案 安装依赖包 修改程序配置 App.config 创建模型对象 Person.cs 创建数据上下文 PersonDbContext.cs 主程序调用 Program.cs 注意 ...
- VUE页面刷新问题
1). location方式 location.reload() 缺点:刷新页面,卡白 2). router方式 this.$router.go(0) 缺点:同一问题,比一好点 3). provide ...
- 集合类--最详细的面试宝典--看这篇就够用了(java 1.8)
看了一个星期源码,搜索上百篇博文,终于总结出了集合类的所有基础知识点,学集合,看这篇就够用了!!! 篇幅有点长, 如果你能全部理解,java最重要的集合就不怕了,秒过面试!!!(本篇素材来自网络,如有 ...
- 【工具相关】Web-Sublime Text2-安装插件HTMLPrettify
一,打开Sublime Text2---->Preferences--->Browse Packages.--->查看Sublime Text2已经有的插件.如图所示. 二,在网上下 ...
- vue-cli脚手架之webpack.dev.conf.js
webpack.dev.conf.js 开发环境模式配置文件: 'use strict'//js按照严格模式执行 const utils = require('./utils')//导入utils. ...
- Linux Linux内核参数调优
Linux内核参数调优 by:授客 QQ:1033553122 关于调优的建议: 1.出错时,可以查看操作系统日志,可能会找到一些有用的信息 2.尽量不要“批量”修改内核参数,笔者就曾这么干过,结果“ ...
- 安卓开发之ScrollView
当界面不足以将所有的内容显示出来的时候便导致下面的部分内容无法显示出来 所有加上ScrollView 来讲要显示的内容放入之中便可以实现上下滚动界面内容 但是当要显示多个控件的时候会出错 原因是Sc ...
- UML类图关系图解
一.类结构 在类的UML图中,使用长方形描述一个类的主要构成,长方形垂直地分为三层,以此放置类的名称.属性和方法. 其中, 一般类的类名用正常字体粗体表示,如上图:抽象类名用斜体字粗体,如User:接 ...
- python pip 使用时错误: Patal error in launcher:Unable to create process using '"'
当前我的电脑配置是64位, 装有python2.7 和python 3.6 两个版本 在使用pip install mysqlclient 的时候,出现了 Patal error in launch ...