目录
进程管理
Linux是支持多进程运行的分时操作系统
分时操作系统 :将时间划分为很小的区间,分给各个进程使用
实时操作系统:根据任务的优先级来决定程序的运行
进程概念
进程:正在运行的程序及其占用的资源,就是已经跑起来的程序
- a进程创建了b进程,则a进程称为b的父进程,b为a的子进程,若一个进程的父进程已经被杀死,他将被init进程“领养”。每一个进程都必须有父进程
- 进程的运行方式,有前台运行和后台运行
- 进程是程序的副本,系统要运行程序时,将硬盘中的程序复制到内存中,再去运行
- 每一个进程都有一个进程号
进程前后台调用命令
- Ctrl+z 把占用shell的进程打入后台挂起
- bg 将后台挂起的进程在后台运行起来
- fg 将进程调回前台运行
- & 运行进程在后台
- jobs 查看当前shell中在后台的所有工作
进程的状态
- R 可执行态 正在被cpu处理的或等待被cpu处理的
- S 可唤醒休眠: cpu在使用时,每个程序对cpu的占用时间是有严格限制的,当使用超时时,会进入休眠状态,等待下一个cpu时间片轮到
- D 不可唤醒休眠: 当一个程序在系统工作中,还有没有被加载完的资源时,不能让其被cpu处理。
- T 暂停状态: 人为控制的状态。
- Z 僵死态: 程序已经结束时,但仍旧占用系统资源时(进程出现bug)
ps命令 查看进程
注意:默认只能查看当前会话的进程(同一个终端窗口),要是打开了两个终端,在另一个终端不能查看当前终端的进程
若需查看,需要加上相应的选项
选项
- A :所有的进程均显示出来,与 -e 具有同样的效用;
- a : 显示现行终端机下的所有进程,包括其他用户的进程;
- u :以用户为主的进程状态 ;
- x :通常与 a 这个参数一起使用,可列出较完整信息。 输出格式规划:
- l :较长、较详细的将该 PID 的的信息列出;
- j :工作的格式 (jobs format)
- f :做一个更为完整的输出。
实例
使用ping创建一个后台进程,使用ps查看进程列表
查看所有运行的进程
ps aux
中括号括起来的,是Linux内核创建的进程,不能杀死,也没有权限杀
1号init进程是,系统启动时创建的,最开始的进程
列出进程的完整信息
各字段意义:
- F 代表这个程序的旗标 (flag), 4 代表使用者为 超级用户;
- S 代表这个程序的状态 (STAT);
- UID 代表执行者的用户名
- PID 进程的ID号
- PPID 父进程的ID;
- SID 会话ID
- C CPU使用的资源百分比
- PRI 指进程的执行优先权(Priority的简写),其值越小越早被执行;
- NI 这个进程的nice值,其表示进程可被执行的优先级的修正数值。
- ADDR 这个是内核函数,指出该程序在内存的那个部分。如果是个执行的程序一般就 是『 - 』
- SZ 使用掉的内存大小;
- WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;
- TTY 该进程是在那个终端机上面运作,- 与终端机无关,则显示 ?- tty1-tty6 是本机上面的登入者程序- pts/0 等等的,表示为由网络连接进主机的程序。
- TIME 使用掉的 CPU 时间。
- CMD 所下达的指令名称
- %CPU 进程的cpu占用率
- %MEM 进程的内存占用率
- VSZ :该进程使用掉的虚拟内存量 (Kbytes)
- RSS :该进程占用的固定的内存量 (Kbytes)
- s(STAT) 进程状态,包括下面的状态:- D 不可中断 Uninterruptible sleep (usually IO)- R 正在运行,或在队列中的进程- S 处于休眠状态- T 停止或被追踪- Z 僵尸进程- W 进入内存交换(从内核2.6开始无效)- X 死掉的进程- < 高优先级- N 低优先级- L 有些页被锁进内存- s 包含子进程- + 位于后台的进程组;- l 多线程,克隆线程
动态进程查看top
用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。
使用实例
前面五行是统计信息区 ,用于系统整体的统计信息
第一行是任务队列信息,同 uptime 命令的执行结果
意义如下
- 14:21:22 是系统当前时间
- up 2 days 是系统运行时间,已经运行2天
- 2 users 是有两个登录用户
- load average: 0.00, 0.03, 0.06 系统负载即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二、三行为进程和CPU的信息
- total 进程总数
- running 正在运行的进程数
- sleeping 睡眠的进程数
- stopped 停止的进程数
- zombie 僵尸进程数
Cpu(s): 行的意义
us 用户占用CPU百分比
sy 内核占用CPU百分比
ni 用户进程空间内改变过优先级的进程占用CPU百分比
id 空闲CPU百分比
wa 等待输入输出的CPU时间百分比
hi 硬中断(Hardware IRQ)占用CPU的百分比
si 软中断(Software Interrupts)占用CPU的百分比
st (Steal time) 是当 hypervisor 服务另一个虚拟处理器的时候,虚拟 CPU 等待实际 CPU 的时间的百分比。
最后两行为内存信息。内容如下:
Mem: 行
- total 物理内存总量
- used 使用的物理内存总量
- free 空闲内存总量
- buffers 用作内核缓存的内存量
Swap: 行
- total 交换区总量
- used 使用的交换区总量
- free 空闲交换区总量
- cached 缓冲的交换区总量。
接下来的就是进程信息区,字段意义和ps类似,会实时更新
kill命令
给一个进程号,发送一个信号
这个信号默认是终止信号(15)
格式: kill 【选项】 【进程号】
选项
-l 不发送信号,列出全部的信号名称及编号
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-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)
若默认发送的15号信号不能杀死进程,可使用9号强制杀死
实例
终止进程
在不知道进程号的情况下,删除gfx用户的ping进程
kill ·ps aux |grep gfx |grepping|grep -v grep|awk'{print $2}'·
#说明#使用了命令置换符,后面一串命令的返回结果作为kill的参数#ps aux查看了所有进程,如果使用grep搜索出了对应的进程,并-v 排除grep进程本身#再使用了,awk切割grep返回的结果
killall 命令
使用进程名来终止进程,支持通配符
killall命令和kill命令一样可以发送信号
查看进程树pstree
基本语法:
pstree [选项] ,可以更加直观的来看进程信息
常用选项:
-p :显示进程的PID
-u :显示进程的所属用户
版权归原作者 GuanFuXinCSDN 所有, 如有侵权,请联系我们删除。