linux中的进程管理
一、进程和线程
1、进程
程序是静态的代码文件;进程是指程序运行时的形态
进程是程序的一个副本(复制程序到内存,相当于副本)
进程是有生命周期的
准备期:准备资源(类似于执行“打扫教室任务”前,“拿扫把”)
运行期:执行过程
终止期:执行后程序所占用的系统资源被回收
程序存在硬盘上,硬盘中的内容要先放到内存中进行缓存,才能被cpu读到,之后才能进行相应运算。
同样的,在内存中计算出的结果,要放到硬盘中进行永久保存。
2、线程
进程是资源调用的最小单位
线程是进程的最小单位
程序执行流是从上倒下贯穿运行的
当进程是多任务物,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程
线程资源是共享的。
进程状态
R(TASK_RUNNING) 可执行态(running,ready):正在被cpu处理,或已经加载好等待被cpu处理
S(TASK_INTRRUPTABLE) 可唤醒休眠:使用cpu超时,进入休眠,再次使用时需要被激活
D(TASK_UNINTRRUPTABLE) 不可唤醒休眠:使用cpu超时,仍有资源没有被加载好,不可以使用cpu,等待加载的时间段就是不可唤醒状态。
T(TASK_STOP) 暂停状态:暂停状态都是人为的在操作,人为的把一个程序暂停,关闭无法使用或暂时不需要的程序,可以人为唤醒
Z(EXIT_ZOMBLE) 僵死态:**进程已经结束,却占用资源不放,需要手动结束程序。**这是一种“bug”、是系统的漏洞。
二、进程查看命令(man ps)
1、图形查看进程
方法一:gnome-system monitor gnome:图形界面
方法二:或者在有图形的情况下,选择utilities-system monitor
但是在企业中一般不用。
2、ps命令(用来查看进程信息)
ps命令也是用来查看进程信息的,但不该命令不依赖于图形。在文本界面下就可以显示进程信息。
命令的三种执行风格 unix bsd GNU
所谓执行风格,就是一种书写规范:
Unix风格的参数,前面加单破折线;
BSD风格的参数,前面不加破折线;
GNU风格的长参数,前面加双破折线。
1、bsd风格
a | 与终端相关的进程(当用户登陆系统后产生的进程都是带终端的) |
---|---|
x | 与终端无关相关的进程 |
u | 用户信息归类的查看方式 |
f | 进程层级关系 |
o | 显示指定参数( pid comm nice pri pcpu ppid stat,user,group等) |
(1)ps #a 与终端相关的进程(当用户登陆系统后产生的进程都是带终端的)
我们可以看到tty这一列有三种tty1,tty1,pts/0,
先说pts/0吧,man里面是这样说的:ptmx and pts - pseudo-terminal master and slave,pts是所谓的伪终端或虚拟终端 (虚拟终端(VT)是一种提供类似于Internet的Telnet协议的远程终端仿真的国际标准化组织(ISO)协议。在远程终端的用户,可以在远程计算机上运行应用程序,就象他们是坐在这台计算机前面一样)。
具体表现就是你打开一个终端,这个终端就叫pts/0,如果你再打开一个终端,这个新的终端就叫pts /1,依此类推。
tty:终端设备的统称。
tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。
tty1~6是文本型控制台,tty7是X Window图形显示管理器。
ps ax显示信息如下:
#PID 进程id(进程的唯一标识)
#TTY 进程用到的终端
#STAT 进程状态
#TIME 进程占用cpu时长
#COMMAND 进程名称
(2)ps #x 与终端无关相关的进程
当然ps -ax可以组合使用。
(3)ps u 用户信息归类的查看方式
#ps aux显示信息如下:
#USER 进程所有人
#PID 进程id
#%CPU 进程使用cpu的用量
#%MEM 进程所用到的内存用量
#VSZ 进程使用的虚拟内存大小,(进程在内存中的大小,以千字节(KB)为单位)
#RSS 进程常驻内存中的数据大小,(进程在未换出时占用的物理内存)
#TTY 进程用到的终端
#STAT 进程状态
#START 进程