今天的主角是我们系统的进程。本文主要参考的文章如下:
Linux进程作业的查看和杀死 Linux中ctrl+z 、ctrl+c、 ctrl+d区别 Linux操作系统下运行命令时Ctrl+C和Ctrl+Z的作用及恢复
今天我们要学习的是“进程”,学习的目的是为了查看、管理进程,以及进程的状态。掌握一些管理基本的指令。
进程是什么?进程(process)是对某个数据集合进行的一次活动。简单介绍一下几个进程相关的术语
-
进程控制块(PCB) 系统为了管理进程而专门定义的数据结构,系统可以通过这个数据结构“感知”进程运行状态。
-
进程上下文 进程是一段段指令,执行指令的结果是对一些寄存器、堆栈状态进行改变。执行进程与否+寄存器和堆栈状态称为进程的阶段。上文是执行过得,正文是正在执行的,下文是将要执行的进程。
指多任务系统中,CPU的控制权由运行任务,转移到另外一个就绪任务时所发生的事件;当前运行任务转为就绪(或者挂起、删除)状态,另一个被选定的就绪任务成为当前任务。
所以和进程一起出现的的兄弟线程是什么鬼?线程(thread)伴随进程创建伴随出现的(主线程),可以访问这个进程所有资源。线程的优点:
- 进程至少拥有一个线程
- 线程的划分尺度小于进程,使得多线程程序的并发性高
- 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
ps
查看这个静态进程。
经常用的ps命令是:
ps aux
参数含义如下:
参数含义a显示当前终端启动的进程u显示用户为主的进程信息x显示所有进程信息-e显示系统内的所有进程信息-l使用长格式显示进程信息-f使用完整的格式显示进程信息anonymousdeMBP:Desktop anonymous$:ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
COMMAND:命令的名称和参数
动态看看这些进程anonymousdeMBP:top
树形显示一下进程
anonymousdeMBP:pstree
需要安装。这里就不试了。
启动一个进程只需要将目录切换到应用程序所在文件夹
./exe
此时的进程是在前台运行的,可以在运行的时候直接将程序放在后台运行
./exe&
对于进程的一些处理操作
ctrl+c 完全终止进程 ctrl+z 强制当前进程转为后台,并使之挂起(暂停). ctrl+l 等于敲clear(这不是进程处理操作)
- CTRL+Z挂起进程并放入后台
- jobs 显示当前暂停的进程
- bg %N 使第N个任务在后台运行(%前有空格)
- fg %N 使第N个任务在前台运行 默认bg,fg不带%N时表示对最后一个进程操作!
- kill %n n表示用jobs观察到的编号
kill –信号代码 PID
信号代码符号含义2SIGINTctrl+c9SIGKILL强制终止15SIGTREM请求终止20SIGTSTPctrl+c
kill和killall的区别:
kill 后面写进程ID,不能写进程名 killall 后面写进程名,不能写进程ID,会将相同名字的进程一起杀死
pkill命令:根据“特定条件”终止相应的进程-u:根据进程所属的用户名终止相应进程 -t:根据进程所在的终端终止相应进程