一.进程的概念
1.进程和程序的区别
(1) 程序是静态概念,本身作为一种软件资源长期保存,而进程是程序的执行过程,他是动态的概念,有一定的生命期,是动态产生和消亡的.
(2)程序和进程无一一对应的关系,一个程序可以由多个进程共用,一个进程在活动中也可顺序的执行若干个程序.
打个比喻,有一位有着好厨艺的计算机科学家正在为他的女儿烘制生日蛋糕,他有做生日蛋糕的食谱,厨房里有所需的原料. 在这个比喻中,做蛋糕的食谱就是程序(即用适当形式描述的算法), 计算机科学家就是处理器(cpu), 而做蛋糕的各种原料就是输入数据. 进程就是厨师阅读食谱,取来各种原料以及烘制蛋糕等一系列的总和.
2.父进程与子进程
(1)子进程是由一个进程产生的,产生这个子进程的进程称为父进程.
(2)在Linux中,使用系统调用fork创建进程. fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境.
(3)父进程终止子进程自然终止.
3.前台进程与后台进程
(1)前台进程:
在shell提示处打入命令后,创建一个子进程,运行命令,shell等待命令退出,然后返回到对用户给出提示符.用户在它完成之前不能执行另一个命令. 我们平时用的命令创建的进程大部分都是前台进程.
(2)后台进程:
在shell提示符处打入命令后,随后加上一个&,这样的就是后台进程,后台进程的运行并不会影响我们输入下一个命令,
例如我在后台打开一个文件
看,这个进程在后台运行,我们仍可以继续输入命令.
4.进程的状态
进程有三种最基本的状态:
(1)运行态:进程占用CPU,并在CPU上运行;
(2)就绪态:进程已经具备运行条件,但是CPU还没有分配过来;
(3)阻塞态:进程因等待某件事发生而暂时不能运行;
二.进程管理的命令
1.查看用户信息 w
直接运行w命令,会显示当前所有用户的信息.
从左至右依次是登录的用户, 登录的终端, 时间, 不知道, jcpu是以终端代号区分,该终端的进程执行所消耗的cpu的时间, pcpu是cpu执行程序耗费的时间, what是用户正在执行的操作. 上面那个load average表示系统的平均负载程度, 如果它们的平均值在0.8以下,则说明系统负载较轻, 当这个值很高时,系统就快GG了.
2.查看系统中的进程 ps
常用选项有:
-a :显示所有用户的进程
-u:显示用户名和启动时间
-x :显示没有控制终端的进程
-e :显示所有进程
-l :长格式显示
-w: 宽行显示
-f :显示进程的完整信息
ps -u or -l :查看属于自己进程的详细信息
ps -le or -aux 查看所有用户执行的进程的详细信息
ps -le | grep 进程名 查看指定进程的信息
PID : 进程号
PPID:父进程的进程号
TTY: 进程启动的终端
STAT(S): 进程当前状态: S为休眠状态,R为运行状态,Z为僵尸状态,D为不可终端的休眠状态, T停止,l 进程是多线程, < 高优先级任务.
僵尸进程: 子进程终止时,它与父进程的关系还会保持,直到父进程也正常终止或父进程调用wait才告结束.因此,进程表中代表子进程的表项不会立刻释放.虽然子进程已经不再运行,但它仍然存在于系统中,因为它的退出码还需要保存起来,以备父进程今后的wait调用使用.这时它将成为一个死进程或僵尸进程.
NI(nice值): 进程优先级
3.杀死进程 kill
关闭进程: kill 进程号
强行关闭进程 : kill -9 进程号
重启进程: kill -1 进程号
关闭图形程序 : 当某个图形程序无响应不能退出时, 输入命令xkill鼠标会变成一个叉,然后左键点击那个程序就会关闭, 如果想取消按右键就可以了.
结束所有进程: killall
查找进程的PID: pgrep 进程名
关闭进程名相关的所有进程: pkill 进程名
4.nice 和 renice
(1)nice:指定程序的运行优先级, 范围为 -20 到 19, 值越小优先权就越大 ,缺省值是0.
格式: nice -n command, 如 nice --5 command
(2)renice :改变一个正在运行的进程的优先级
格式: renice n pid (注意没有横杠)
5.进程的挂起和恢复
(1). 进程的挂起和终止
挂起: crtl + z
终止: crtl + c (这个常用, 用来结束当前命令)
(2) 进程的恢复
恢复到前台继续执行: fg
恢复到后台继续执行:bg
(3)查看被挂起的进程 : jobs
6. top 命令 : 进程状态显示和进程控制
常用选项:
d:指定刷新时间
c:显示整个命令行而不仅仅显示命令名
直接在当前页面按下d或c,即可更改选项.