Linux进程管理简介及进程管理工具
来源:互联网 发布:淘宝网如何注销账户 编辑:程序博客网 时间:2024/04/30 16:51
一、进程管理理论知识简介
1、程序=指令+数据
2、进程是程序的副本,可以有多个。
3、内核是一个资源调度监视器。
4、进程的启动、调度都是由内核完成的、
5、cpu的运算能力靠时间流逝提供,内存将空间用于存储程序。
6、内存被事先划分了多个大小相同的页框(page frame),页面(page)可能为数据,在页框内。
7、Linux中的swap(交换分区)即是windows中的虚拟内存,即在内存不够用时使用磁盘资源存放内存中不常用的进程。
8、mmap:memory map–>共享内存空间。它映射至每个进程地址空间。
9、在Linux中,所有在用户空间中启动的进程,除init之外,都由其父进程创建的,其父进程通过fork()系统调用实现。
10、父进程创建子进程后会终止(kill)子进程
11、所有进程的父进程是init。
12、若父进程的子进程无法被收回,内存无法被分配,会导致内存泄漏。、
13、内核中有所有进程的信息表。
14、线程(thread):是一个进程内的多个执行流
15、用户空间和内核空间存在模式转换。
16、进程调度是内核的核心。
17、Linux有140个队列,优先级有140个,从0~139.
(1)数字越小,优先级越高(从100~139之间,属于静态优先级)。
(2)实时优先级:1~99,数字越大,优先级越高
(3)动态优先级:由内核维护,动态调整
18、进程的分类:
(1)批处理的进程
(2)交互式进程
(3)实时进程
19、Linux终端和进程的关系:
(1)控制台:/dev/console
(2)物理终端:/dev/pts#
(3)虚拟终端:/dev/tty[1-6]
(4)模拟终端:如ssh
(5)串行终端:/dev/serial或者/dev/ttyS#
(6)进程的两种类别
①跟终端相关的进程
②跟终端无关的进程
二、进程管理命令
1、进程管理的相关命令:
(1)ps (2)pstree (3)pidof (4)top (5)htop (6)pmap
(7)vmstat (8)dstat
2、pstree命令:查看进程树
3、ps命令
(1)作用:用于显示系统当前进程状态的命令
(2)格式:ps [OPTIONS]
(3)选项
①a:显示所有跟终端相关的进程。
例
# ps a
②x:显示所有跟终端无关的进程。
例:
# ps x
③u:以用户为中心显示进程相关信息
例:
# ps aux
各字段含义:USER:用户名PID:进程号%CPU:cputime/realtime,进程占用cpu时间比实际占用cpu时间的比%MEM:进程占用内存和实际内存空间的比例VSZ:Virtual memory Size(虚拟内存集,单位为KB)RSS:实际内存及集(也称非交换物理内存或者常驻内存集)TTY:使用哪个终端(?表示进程与终端无关)STAT:进程的状态 S:可中断睡眠状态 D:不可中断睡眠状态 R:运行或可运行状态 T:停止状态 Z:僵死状态 S:session leader(有子进程) l:多线程进程 +:前台进程 N:低优先级进程 <:高优先级进程START:进程启动时间TIME:进程进行的时长COMMAND:由哪个命令发起的进程,带{}表示内核线程
④-e:显示所有进程
⑤-f:显示进程完整格式列表
⑥-F:显示进程额外信息
例1:
# ps -ef
字段说明: PPID:父进程的PID号 C:进程占用cpu的时间
例2:
# ps -eF
字段说明: PPID:父进程的PID号 C:进程占用cpu的时间 SZ:类似于(VSZ)虚拟内存集(单位为KB) RSS:实际内存集 PSR:运行在哪颗CPU上
⑦-H:显示进程层次关系
例:
# ps -eFH
⑧-o:自定义显示格式
例1:只显示进程号和由哪个命令发起
# ps axo pid,command
例2:只显示pid、nice值,并且可翻页显示
# ps axo pid,command,nice | less
4、pgrep命令
(1)格式:pgrep [-flvx] [-u euid…] [-U uid…] … [PATTERN]
(2)作用:指定过滤条件以后显示符合条件的进程
(3)选项:
①-U [USERNAME|UID]:显示相关用户进程
例:
# pgrep -U hadoop
②-G GROUPNAME|GID:显示相关组进程
例:
# pgrep -G cloud
5、pidof命令
(1)作用:显示某个进程的进程号
(2)例:
# pidof bash
6、top命令
(1)top是一个交互式的命令,用于管理并且查看进程。
(2)选项:
①-d #:指定进程信息刷新时间间隔
②-b:以批次显示top刷新
③-n #:指定彼此显示时显示的批数
例:
# top -d 1 -b -n 5每秒刷新一次进程信息,共显示5批次
(3)top命令各字段的解释
# top1、第一行:当前系统时间 、 运行时长 、 当前登录用户数 、 平均负载(一般为小数) cpu平均队列长度,分别为{过去1分钟、过去5分钟、过去15分钟}2、第二行:描述进程总数及状态3、第三行:CPU描述:按1键可展开CPUs的各CPU状态(1)%us:用户空间程序的占用百分比(user)(2)%sy:内核模式程序的占用百分比(system)(3)%ni:调整nice值所占用的cpu百分比(nice)(4)%id:CPU的空闲时间比例(idle)(5)%wa:等待I/O完成所占据的时间比例(wait)(6)%hi:硬件中断所占据cpu时间的百分比(hardware interrupt)(7)%si:软件终端所占据cpu时间的百分比(software interrupt)(8)%st:被偷走的cpu时间占据的百分比(stolen)4、第七行:(1)VIRT:虚拟内存集(相当于VSZ)(2)RES:实际内存集(相当于RSS)(3)SHR:共享内存集(用到共享库的时候,此处数值会变化)(4)S:进程状态STAT(5)%CPU:从上次更新到现在cpu占用百分比(6)%MEM:进程占用物理内存百分比(7)TIME+:进程使用CPU时间总计(单位是毫秒)
(4)top命令是根据%CPU进行排序的。
(5)top交互式按键:
①M:按内存空间占用大小排序②P:按CPU时间占用大小排序③T:按累计占有CPU时长排序(TIME+)④k:杀死一个进程,按k后输入PID号即可⑤m:是否显示内存摘要信息⑥t:是否显示CPU和进程的统计信息⑦l:是否显示负载信息⑧q:退出⑨s:改变top命令刷新频率
7、htop命令
(1)交互式命令,支持鼠标操作,与top相似,比top命令更新更强大。
(2)htop一些交互式按键:
①u:选定指定用户的进程②l:显示进程所打开的文件列表③s:显示进程执行的系统调用④a:绑定进程到指定CPU上,空格键可取消或增添⑤#:快速将光标定位至指定PID进程上⑥F4:匹配过滤,显示符合条件的进程
8、vwstat命令
(1)作用:显示进程,cpu,内存,io,系统中断等信息。
(2)格式:vmstat [delay [counts]]
①delay:每隔delay秒显示
②counts:一共显示的次数
③例:
# vmstat 3每隔3秒刷新一次,不断显示# vmstat 3 2每隔3秒显示,只显示两次# vmstat只显示一次,不刷新
(3)选项:
①-s:显示内存使用摘要信息(统计数据)
(4)vmstat命令中字段说明
1、pross(1)r:运行或等待cpu时间片的进程的个数。(2)b:被阻塞(通常为等待IO完成)的进程队列的长度。2、memory(1)swpd:从物理内存被交换至swap中的数据量。(2)free:未使用的物理内存大小。(3)buffer:缓冲(buffer)空间大小,通常与缓存写操作相关。(4)cache:缓存空间大小,通常与缓存读操作相关。3、swap(1)si:swap in,数据进入swap中的数据量,通常是速率(kb/s)。(2)so:swap out,数据离开swap中的数据量,通常是速率(kb/s)。4、io(1)bi:block in,从块设备读入内存(或系统)的数据量,通常是速率(kb/s)。(2)bo:block out,保存至块设备中的数据量,通常是速率(kb/s)。5、system(1)in:interrupt,中断发生速率,每秒的中断数。(2)cs:context switch,进程切换速率,通常为每秒切换次数。
9、dstat命令
(1)作用:一个多功能的系统资源管理器
(2)使用格式:dstat [-afv] [OPTIONS] [delay [count]]
(3)选项:
①-a:显示cpu、硬盘、网络、内存、系统信息。相当于选项-cdngy
②-f:显示详细信息(扩展信息)
③-c: 显示cpu使用情况
④-d : 显示磁盘使用情况
⑤-g: 显示页面数据
⑥-i: 启用中断数据
⑦-l: 平均负载统计(1分钟,5分钟,15分钟)
⑧-m: 显示内存使用信息
⑨-n: 显示网络信息
⑩-p: enable process stats (runnable,uninterruptible, new)
-r: enable I/O request stats(read, write requests)
-s: 显示交换分区使用信息
-t: 启用时间/日期输出
-y: 系统统计(中断上下文切换)
(4)例:
# dstat -af 5 2显示cpu、硬盘、网络、内存、系统所有信息和扩展信息,每隔5秒刷新一次,显示两次。
三、进程管理命令之二
1、nice和renice命令
(1)作用:手动调整进程优先级
(2)有限的nice值是【-20,19】分别对应于进程优先级【100,139】。
(3)默认nice值为0,其默认优先级为120。
(4)注意:
①普通用户只能调大nice值,nice值越大,其对应的优先级数字越大,优先级越小。
②管理员可以在【20,19】内任意调整nice值
5、对于尚未启用的程序,调整nice值的格式为
(1)格式:# nice -n # COMMAND
(2)例:
# nice -n -5 /bin/bashps axo pid,ni,command | grep "bash"检查bash进程的nice值是否被调整
6、对于运行中的进程,调整其nice值的格式
(1)格式:renice # PID
(2)例:
# pidof bash# renice -6 7522275222为bash的进程号也可以使用命令修改# renice -6 `pidof bash`
四、进程间通信及命令
1、进程的通信分类
(1)本机通信
①通过信号
②共享内存
(2)跨主机通信
①RPC,远程过程调用
②socket
2、kill命令
(1)作用:用于实现向其他进程发送信号
(2)常用格式:kill -SIGNAL PID
(3)-SIGNAL的表示方法
①数字代号:如1、9等(man 7 signal可查看)
②信号名称:如SIGHUP等
③简写的信号名称:如HUP等
(4)常用选项
①-l:可以查看进程发送的常用信号(man 7 signal也可查看)
②例:
# kill -l1、常用信号数字代号及信号名称1)SIGUP:通知程序重读配置文件;而不用重启程序;在进程服务多人使用时候,这种方法可以不用停止服务从而修改服务的配置。2)SIGINT:signal interrupt(中断信号)。相当于发送Ctrl+c9)SIGKILL:杀死进程,直接杀死,容易使进程服务异常。15)SIGTERM:终止进程,留以足够时间使进程停止并终止(终止进程时候默认使用该信号)19)SIGSTOP:停止进程18)SIGCONT:恢复进程
③例:
kill -15 75698
3、killall命令
(1)格式:killall -SIGNAL command
(2)例:
# killall -15 httpd
五、Linux作业控制
1、前台作业:占据着一个终端
2、后台作业:作业执行时不占据终端。作业在启动后就释放终端。
3、非守护进程类的程序,启动以后都在前台工作
(1)如果已经启动,按Ctrl+z把前台作业送往后台,作业被停止
(2)如果尚未启动:COMMAND & 将前台作业送去后台。
(3)例:
# tar Jcf /tmp/etc_usr.tar.xz /etc/* /usr/*# Ctrl+z
4、退出当前回话,作业也会终止
(1)因为作业与当前终端相关
(2)如果把作业送往后台后,不期望作业随终端结束而而终止,使用命令
nohup COMMAND & 剥离终端与作业的关系。既能送到后台,又能避免前台终端终止而导致作业终止。
5、查看作业号命令
(1)格式:jobs
(2)例:
# tar Jcf /tmp/etc_usr.tar.xz /etc/* /usr/*# Ctrl+z# vim /tmp/fstab# Ctrl+z# cat # Ctrl+z# jobs
(3)jobs中字段:
①+为fg、bg命令默认调度的作业
②-为“+”后一个调度的作业
(4)jobs的默认作业调度是后进先出的,像栈。
6、让送往后台的作业继续执行的命令
(1)将作业调回前台继续执行:fg [%job_num]
①例:
# fg %3
(2)让作业在后台继续运行:bg [%job_num]
①例:
# bg %2
7、终止作业
(1)格式:kill [%job_num]
(2)例:
# kill %3
六、pmap命令
1、作用:查看进程所在的内存空间映射表
该命令来自于文件/proc/(pid)/maps中
2、格式:pmap pid
(1)例:
# pmap `pidof vim`
3、字段说明
(1)进程所在内存的起始内存地址
(2)进程占据空间大小
(3)内存区域访问权限
(4)该进程关联的库文件及二进制文件。
以上是我个人的总结,如有错误,欢迎大家指出,谢谢大家。
- Linux进程管理简介及进程管理工具
- linux下几种进程管理工具
- Linux进程管理工具
- linux进程管理工具supervisor
- Linux 进程管理工具:supervisor
- Linux进程及作业管理
- linux进程监控及管理
- Linux进程及job管理
- [Linux]--进程基本概念及管理
- 进程及进程管理
- Linux后台进程管理工具:Supervisor
- linux进程编程:子进程创建及执行函数简介
- 进程管理工具
- Linux进程管理及作业控制
- linux 中进程及任务管理命令
- linux进程的管理,显示及杀死
- Linux进程管理及相关命令
- 详解Linux进程及作业管理
- 5.视图
- HashSet
- 《Effective C++》学习笔记——条款45
- 技术的坚持
- 像素缓冲区对象(PBO)的异步Read-Back 源码解析
- Linux进程管理简介及进程管理工具
- Android 性能优化 内存优化 How to do
- Codeforces Round #379 (Div. 2)
- Linux内核移植--开机动画
- AngularJS 的基础使用
- 东秦第四届图灵杯-G-爬楼梯【DP】
- 闲聊阿里加固(一)
- letcode5 最长回文子串
- 谈谈外表协会的重要性