系统基础-进程管理

Linux 进程管理

你可以了解些什么

  1. 什么是进程
  2. 进程和程序的区别
  3. 如何查看进程
  4. 进程的终止
  5. 获得进程打开的文件
  6. 进程的优先级

前言

进程管理是 Linux 系统中一个非常重要的概念,但是,这并不意味着我们需要太过接近底层地去了解这些进程是如何运行的、内核是如何管理调度的、时间片是如何轮转分配的等问题,我们所需要关心的是如何控制这些进程,包括查看、启动、关闭、设置优先级等。

什么是进程

进程表示程序一次执行的过程,它是应用程序的运行实例,是一个动态地过程。或者更为简单的描述为:进程是操作系统当前运行的程序。

当一个进程开始运行时,就是启动了这个过程。进程包括动态执行的程序和数据两个部分。

现代操作系统支持多进程处理,这些进程可以接受操作系统的调度,所以说每个进程都是操作系统进行调度和分配的一个独立单位。

所有的进程都可能存在3中状态:

状态 含义
运行态 程序当前实际占用着CPU等资源
就绪态 带灯CPU分配资源,随后运行
阻塞态 因请求外部资源而无法继续执行,制动放弃当前CPU资源转而等来所请求的资源

进程之间存在的两种关系

关系 含义
互斥 进程间不能同时运行,必须等待一个进程运行完毕,另一进程才能运行
同步 进程间通过某种通信机制实现信息交互

现代计算机使用信号量机制来实现进程间的互斥和同步。

进程和程序的区别

我的理解,进程是程序在内存中的一个实例,是动态地。而程序是进程的来源,存储在持久性存储介质上的,是静态的。

如何查看进程

ps param

常用参数

参数 含义
A 列出所有的进程,和-e有同样的效果
a 列出不和本终端有关的所有进程
w 显示加宽可以显示较多信息
u 显示有效使用者相关进程
aux 显示所有包含其他使用者的进程

使用-A 参数

image

使用-aux参数

image

使用ps只是当前查询状态下进程瞬间的状态信息

top命令提供了实时的系统状态监控,可以按照 CPU 使用、内存使用、执行时间等指标对进程进行排序。

image

第一行是服务器的基础信息,包括top命令的刷新时间,系统的启动时长,当前等登陆用户数,系统的负载数据。

第二行是当前系统进程概况,进程总数、运行数、休眠数、停止的进程、僵尸进程。

第三行是CPU的信息,字母含义如下表

代号 含义
us 用户占用的CPU百分比
sy 内核空间占用的CPU百分比
ni 改变过优先级的进程占用的 CPU百分比
id 空闲CPU百分比
wa I/O等待百分比
hi 硬中断百分比
si 终端占用CPU百分比

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

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

最后是动态地进程信息

top 命令动态进程信息中没列的含义

字段 含义
PID 进程ID
USER 进程所有者
PR 进程优先级
NI nice值,赋值表示高优先级,正值表示低优先制
VIRT 进程使用虚拟内存总量,单位为Kb,VIRT=SWAP+RES
RES 进程使用的为被换出的物理内存大小,单位为Kb,RES=CODE+DATA
SHR 共享内存大小,单位为Kb
%CPU 上次更新到现在的CPU时间占用百分比
$MEM 进程使用的CPU时间占用百分比
TIME+ 进程使用的CPU时间总计,单位为1/100秒
COMMAND 进程名称(命令名/命令行)

在进程页面按下F键,可以显示更多字段。前面打了*号的就是当前显示的字段,要想显示更多字段可以按下字段前面的字母对应的键。

按下O键可以进行排序,按下字段前面的字母对应的键排序,按下回车返回。默认按照CPU使用率排序。

image

进程的终止

要终止一个进程,需要通过 kill、killall 等命令来实现。

这些命令的原理都是向内核发送一个系统操作信号以及某个进程的标识符,使得内核对指定标识符的进程进行相应的操作。

一般来说,kill命令需要和ps命令联合使用。原因是kill后面跟着的应该是需要被终止的进程的PID。典型用法是使用ps查询进程的PID,然后使用kill将其终止。

kill [信号代码] 进程ID
image

命令kill后可以跟的信号代码一共有64种,使用kill -l就可以看到具体有哪些,但是常用的一般只有3个,即HUP(1)/KILL(9)/TERM(15),分别代表重启、强行杀掉、正常结束。

image

实际上有一些进程因为运行中出现问题而无法通过这种方式停止,在这种情况下就需要进行强杀(参数-9)。但是这个命令也有其天然的危险,就是进程可能会直接被系统终止,而没有清理之前申请的内存,这会造成一定程度的“内存泄漏”,因此一般情况下不建议使用。而-15这个参数相比温和一些,她会使进程正常退出,它也是Linux默认的程序中断信号(也就是在不加参数的情况下默认使用的信号)。

killall httpd

这个命令可以不使用 PID 而使用进程名称,相对安全一些。

查询进程打开的文件

Linux 中一切皆文件,可以使用 lsof 工具来查看系统打开的文件。

lsof 这个工具在 CentOS7 中自带了。

常用参数列表

参数 含义
filename 显示打开指定文件的所有进程
c 显示COMMAND列中包含指定字符的进程所有打开的文件
u 显示所属于user进程打开的文件
g 显示归属于 gid 的进程情况
d 显示目录下被进程打开的文件
D 搜索目录下的所有文件,时间相对较长
d 显示指定文件描述符的进程
n 不将IP转换为hostname,默认是不加 -n 参数
i 用以显示符合条件的进程情况

这个命令可以在不加任何参数的情况下直接运行,但是该命令一定需要用 root 账号来执行,因为 lsof 在运行时需要访问很多核心文件,需要的权限很高,其所输出的是目前系统中所有打开的文件。

image

Linux 系统中有很多日志文件会不断地被写入、更新,/var/log/message就是其中的一个。

查看当前使用该文件的进程

image

这里报了一个警告,原因可能是因为root管理员没有run/user/1000/gvfs这个文件夹的权限。解决方法如下:

su - root
umount /run/user/1000/gvfs
rm /run/user/1000/gvfs

然后再次运行这条命令,警告没有了。

使用 lsof 根据端口号查看进程,例如 80 端口

image

进程的优先级调整

进程的nice优先级取值范围为:-20~19,数值越低优先级越高,也就能更多地被操作系统调度运行,默认为0。

普通用户也可以给自己的进程设定优先级,但是范围为:0~19。

实际上,Linux 使用了“动态优先级”的调度算法来确定每一个进程的优先级,一个进程的最终优先级=优先级+nice优先级

nice命令仅限于在启动一个进程的时候同时赋予其nick优先级,比如自己写的脚本,相以较高的优先级来运行:

nice -n -10 ./SctiptName

对于已经启动的进程,可以用renice命令进行修改,不过,这需要先查询出该进程的PID(使用ps命令)。

renice -10 -p PortNum
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,157评论 2 33
  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,119评论 0 23
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,243评论 9 467
  • 一般指嗅探器。嗅探器 可以窃听网络上流经的数据包。 用集线器hub组建的网络是基于共享的原理的, 局域网内所...
    不是明天阅读 639评论 0 0
  • 【送别】 席慕容 不是所有的梦都来得及实现 不是所有的话都来得及告诉你 内疚和悔恨 总要深深地种植在离别后的心中 ...
    别回头有狗阅读 219评论 0 0