linux进程关系,Linux之进程查看与管理

Linux之进程查看与管理

1、进程的基本概念

进程是运行起来的程序。唯一标示进程的是进程描述符(PID),在linux内核中是通过task_struck和task_list来定义和管理进程的

进程分类:交互式进程、批处理进程、实时进程

交互式进程:一般是由Shell启动的进程。交互式进程有:控制台命令shell,文本编辑器,图形应用程序

批处理进程(Batch Process):不需要用户交互,一般在后台运行。

实时进程:这种进程不能被低优先级进程阻塞,并且在很短的时间内做出反应。典型的实时进程:音视频应用程序,机器人控制等

进程优先级:静态优先级、动态优先级

静态优先级(priority): 被称为“静态”是因为它不随时间而改变,内核不会修改它,只能通过系统调用nice(每个进程都会具有的属性,一个能影响进程优先级的数字)去修改

静态优先级内核为其分配的优先级数为:100(高优先级)-139(低优先级),数值越大,优先级越低

动态优先级(counter): 只要进程拥有CPU,它就随着时间不断减小;当它为0 时,标记进程重新调度

实时优先级:实时优先级只对实时进程有意义。1-99:实时优先级,数字越大优先级越高

进程状态:运行态(running正在运行的进程)、可中断睡眠态(进程处于睡眠状态,但是可以被中断)、不可中断的睡眠态(进程处于睡眠状态,但是不可以被中断)、停止态(stoped不会被内核调度)、僵死态(zombie产生的原因是进程结束后,它的父进程没有wait它,所导致的)

2、进程与线程区别

进程包含四个要素:一段供进程执行的程序,该程序可以被多个进程执行、独立的内核堆栈、进程控制块(task_struct)、独立的存储空间。线程只包含了进程前面三种要素,线程分:内核线程(完全没有用户空间)、用户线程(共享用户空间)

3、常见的进程查看以及管理工具:top、pstree、pidof、pgrep、pkill、htop、glances、pmap、vmstat、dstat、iostat、kill、job、bg、fg

pstree命令:以树状图显示进程间的关系

语法:pstree [-acGhlnpuUV][-H ][/]

常见参数选项

-a:显示每个程序的完整指令

-p:显示程序识别码

练习:

1)、查看当前进程树以及显示程序识别码

7e9ea64ec5217d9ee9b0182b691d0f78.pngb8d35efb3d0bd95bdcd6d61569d5f894.png

ps命令:是Process Status的缩写,显示当前进程的状态

语法:ps[参数]

常见参数选项

a:显示所有进程

u:指定用户的所有进程

-e: 显示所有进程

-f: 显示丰富格式信息

-F: 显示额外信息

-H: 以层级形式显示进程间关系

组合参数

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

-ef:丰富格式显示进程状态

-eFH:层级显示额外信息

axo:自定义显示内容,如:ps axo pid,command,psr,pri

练习:

1)、显示当前进程状态

f6c740b78f2af824a99a1cf10944985c.png

注解上图各个字段的意义

USER:进程使用者账号

PID :进程编号

%CPU:使用掉的CPU资源百分比

%MEM:占用的物理内存百分比

VSZ :使用虚拟内存量 (Kbytes)

RSS :占用的固定的内存量 (Kbytes)

TTY :占用终端,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序

STAT:目前的进程状态,主要的状态有

R :运行

S :睡眠 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒

T :停止

Z :终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

START:被触发启动的时间

TIME :CPU 运作的时间

COMMAND:运行的指令

2)、自定义显示id、命令、优先级、cpu编号

d7c58b1c1927b2d9eb58fbccfe6183fc.png

pgrep命令:查找或者发信号给进程通过名称和其它属性

语法:pgrep [参数] 程序名

常见参数选项:

-l:同时显示进程名和PID

-o:当匹配多 个进程时,显示进程号最小的那个

-n:当匹配多个进程时,显示进程号最大的那个

练习:

1)、显示当前ssh进程的ID,并且列出最小的那个

2c77062707c09ad908552f39dd477006.png

pidof命令:用于查找一个运行的程序的PID (不常用,仅供了解)

常见参数选项

-s:只返回1个pid

-x:返回运行给定程序的shell的pid

-o:忽略后面给定的pid

练习:

1)、显示httpd进程PID

6499ab4e59cafb25f3f9f40ae108ecaa.png

top命令:显示系统当前的进程和其他状况,动态显示

语法:top [参数] [选项]

常见参数选项、交互命令

交互命令

P:以占据的CPU百分比大小排序;

M:以占据Memory空间大小排序;

T:CPU累积占用时间排序;

l: 是否显示系统负载行;

t: 是否显示进程摘要信息及CPU负载状态;

1:平均或单独显示CPU的负载状态;

m: 是否显示内存相关的状态信息;

q: 退出命令

s: 修改延迟时长

k: 终止指定进程

选项

-d:屏幕信息刷新之间的时间间隔

-b: batch,批次显示

-n #: 显示的批次数量

练习:

1)、显示当前进程状态

261e4e32d92091b3a3b244d4fe5c14b9.png

注解上图各行、字段的信息,主要说明前5行系统整体的统计信息内容,第6行跟ps命令查下进程状态字段类似,这里不重复

第1行依此为:当前时间、系统运行时间(时:分)、当前登录用户数、load average(系统负载)、三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值

第2行依此为:进程总数、正在运行的进程数、睡眠的进程数、停止的进程数、僵尸进程数

第3行依此为:用户空间占用CPU百分比、用户进程空间内改变过优先级的进程占用CPU百分比、空闲CPU百分比 、等待输入输出的CPU时间百分比

第4行依此为:物理内存总量、使用的物理内存总量、空闲内存总、用作内核缓存的内存量

第5行依此为:交换区总量、使用的交换区总量、空闲交换区总量、缓冲的交换区总量

2)、更新两次后终止更新显示

3ec42c56802e4d0cd177c8606ed29d99.png

3)、top视图监控每个逻辑CPU的状况并且高亮显示(按键“1”、“b”)

3b3cbbf7de150065b2884a138bafe899.png

4)、改变当前进程状态以%MEM排序(注:可通过”shift + >”或”shift +

de079d2aa1c4b23154cc6a53345d6b5e.png

uptime命令:查询linux系统负载的。用法比较简单并且查下的出来的结果与top命令第一行load average类似这里不做详细介绍,下图与上图top命令可对比一下

1071c77ddf652a68211a7c7de7f955e9.png

htop工具:基本文本模式的、交互式的进程查看器,主要用于控制台或shell中,可以替代top,或者说是top的高级版。默认不安装,需要手动安装。有以下几个优点:快速查看关键性能

统计数据、横向或纵向滚动浏览进程列表、杀掉进程时可以直接选择而不需要输入进程号、鼠标操作条目、比top启动得更快

常用选项功能

F1 : 查看htop使用说明

F2 : 设置

F3 : 搜索进程

F4 : 过滤器,按关键字搜索

F5 : 显示树形结构

F6 : 选择排序方式

F7 : 减少nice值,这样就可以提高对应进程的优先级

F8 : 增加nice值,这样可以降低对应进程的优先级

F9 : 杀掉选中的进程

F10 : 退出htop

/ : 搜索字符

l :显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件

u :显示所有用户,并可以选择某一特定用户的进程

s : 将调用strace追踪进程的系统调用

t : 显示树形结构

H :显示/隐藏用户线程

I :倒转排序顺序

K :显示/隐藏内核线程

M :按内存占用排序

P :按CPU排序

上下键或PgUP, PgDn : 移动选中进程

左右键或Home, End : 移动列表

Space(空格) : 标记/取消标记一个进程。命令可以作用于多个进程,例如 "kill",将应用于所有已标记的进程

练习:

1)、安装显示当前系统进程状态

c1d93a22f21becadc7b4cfa683bacfe5.png

2)、树形显示,杀掉进程httpd

723afd8057b0d8b802113c00078572b5.png

3)、显示当前系统进程搜索httpd进程

97909365eee9ea870e26173a7c140bdd.png

vmstat命令:Virtual Meomory Statistics(虚拟内存统计)的缩写,监控虚拟内存、进程、CPU

语法:vmstat [参数]

常见参数选项

-a:显示活跃和非活跃内存

r: 等待运行的进程的个数;(队列长度)

count:刷新次数

-S:使用指定单位显示( k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte))。默认单位为K(1024 bytes)

练习:

1、显示当前进程情况

9b40256faea88fe94227a79c1d032a22.png

对上图各字段说明:

Procs(进程):

r: 运行队列中进程数量

b: 等待IO的进程数量

Memory(内存):

swpd: 使用虚拟内存大小

free: 可用内存大小

buff: 用作缓冲的内存大小

cache: 用作缓存的内存大小

Swap:

si: 每秒从交换区写到内存的大小

so: 每秒写入交换区的内存大小

IO:(现在的Linux版本块的大小为1024bytes)

bi: 每秒读取的块数

bo: 每秒写入的块数

系统:

in: 每秒中断数,包括时钟中断

cs: 每秒上下文切换数

CPU(以百分比表示)

us: 用户进程执行时间(user time)

sy: 系统进程执行时间(system time)

id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示

wa: 等待IO时间

glances工具:网络、磁盘读写、磁盘分区等情况(工具包需要手动安装)

常用选项:

-b: 以Byte/s为单位显示网卡设备数据交换速率;

-d: 关闭磁盘I/O功能模块;

-f /PATH/TO/SOMEFILE:设置输出文件的位置及格式

-o HTML|CSV:使用HTML/CSV格式

-m: 关闭mount功能模块

-n: 关闭网络功能模块

-r: 关闭进程列表功能模块

-t #: 指定延迟时长,默认为3秒

-1:单独显示每颗CPU相关负载数据信息

glances支远程模式(C/S):

Server: 以监听模式启动glances

Client: 以远程模式启动glances,远程连入指定服务器,并显示Server上的相关性能数据

服务模式:glances -s -B 本地IP地址

-B: 用于指明监听的本地地址;

客户端模式:glances -c 服务器IP地址

-c: 用于连入的服务器的地址;

练习:

1)、当前系统状态,输出 HTML 格式文件

aa4b3b3a3f16bbaa396ffd65359fea8d.pngedba486d607409977a1eda0f03e3537c.png

注意需要安装需要python-jinja2库

2)、远程查看192.168.2.10(注意关闭防火墙)系统状态

dfb92650b821eb40641c7645ccfabab9.png1f9a3820526e75ccc500ad24924defe7.png09518f0d166911082b643b02383f6310.png

dstat工具:实时地看到所有系统资源(可取代vmstat,iostat,netstat和ifstat这些命令)

语法:dstat [-afv] [options..] [delay [count]]

常见参数选项

-l :显示负载统计量

-m :显示内存使用率

-r :显示I/O统计

-s :显示交换分区使用情况

-t :将当前时间显示在第一行

-c : 显示cpu性能指标相关的统计数据;

-d : 显示disk相关的速率数据

-g : 显示page相关的速率数据

-i : 显示interrupt相关的速率数据

-n : 显示网络收发数据的速率

-p : 显示进程相关的统计数据

-y : 显示系统相关的数据,包括中断和进程切换

--tcp :显示常用的TCP统计

--udp :显示监听的UDP接口及其当前用量的一些动态数据

--disk-util :显示某一时间磁盘的忙碌状况

--freespace :显示当前磁盘空间使用率

--proc-count :显示正在运行的程序数量

--top-bio :指出块I/O最大的进程

--top-cpu :图形化显示CPU占用最大的进程

--top-io :显示正常I/O最大的进程

--top-mem :显示占用最多内存的进程

练习:

1)、显示系统资源情况

ebee25bcd140e99f906d0fa703a40a1d.png

简要注解上图字段说明

CPU状态:CPU的使用率

磁盘统计:磁盘的读写操作,这一栏显示磁盘的读、写总数

网络统计:网络设备发送和接受的数据,这一栏显示的网络收、发数据总数

分页统计:系统的分页活动。

系统统计:这一项显示的是中断(int)和上下文切换(csw)

2)、显示当前网络情况

cba62662165f32f7ceb910c77d896696.png

killall命令:杀死所有指定进程(kill processes by name)

语法:killall[参数][进程名]

常见参数选项

-e:要求匹配进程名称

-i:交互模式,杀死进程前先询问用户

-l:列出所有的已知信号名称

-q:不输出警告信息

-s:发送指定的信号

-v:报告信号是否成功发送

-w:等待进程死亡

kill命令:终止指定的进程(terminate a process)的运行

kill[参数][进程号]

常见参数选项

-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号

-s:指定发送信号

-u:指定用户

常用信号

HUP    1    终端断线

INT     2    中断(同 Ctrl + C)

QUIT    3    退出(同 Ctrl + \)

TERM   15    终止

KILL    9    强制终止

CONT   18    继续(与STOP相反, fg/bg命令)

STOP    19    暂停(同 Ctrl + Z)

练习:

1)、用ps查找进程vim,然后用kill杀掉

4f09ba1890fe6b23d60f37845b951a3f.png

2)、杀死所有同名httpd进程

fd990dc11bb8d834a74f2b7422eccb47.png

3)、用ps查找进程vim,然后用kill杀掉所有同名进程

a85b7caf7609e4a40b326d796c4a1a63.png

下面简单介绍一下作业管理

作业管理指的是控制正在运行的进程的行为,有前台作业、后台作业。。比如,用户可以挂起一个进程,等一会儿再继续执行该进程。

前台作业:通过终端启动,并且在停止之前也会一直占据终端

后台作业:作业启动之时与终端无关,或者是在前台启动,但启动后转为与终端无关模式运行

作业管理常用操作命令

&:命令放在后台执行

jobs:查看后台作业

fg:作业后台到前台(后台stopped、后台running,到前台running)

bg:让作业后台运行(后台stopped,到后台running)

常用快捷键

Ctrl+C:结束当前命令

Ctrl+D:输入结束(EOF)

Ctrl+Z:当前作业放到后台并暂停

Ctrl+S:暂停屏幕输出

Ctrl+Q:恢复屏幕输出

练习:

1)、将ping 192.168.2.10命令后台执行,查看后台作业,然后再掉到前台运行,最后结束当前命令

5d73ca0520ab369419dc50a65cd6a5f2.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值