目录
引言.
Linux是一个多用户、多任务操作系统。在这样的系统中,各种计算机资源的分配和管理都以进程为单位,为了协调多个进程对这种共享资源的访问,操作系统要跟踪多种进程的活动,以及他们对系统资源的使用情况,从而实施对进程和资源的动态管理。
一、进程与作业
(一)定义
1.进程
进程是指一个具有独立功能的程序的一次运行过程,也是系统进行资源分配和调度的基本单位。即每个程序模块和它执行时所处理的数据组成了进程。
进程不是程序,但由程序产生。进程与程序的区别在于:
(1)程序是一系列指令的集合,是静态的概念,而进程则是程序的一次运行过程,是动态的概念;
(2)程序可以长期保存,而进程只能暂时存在,动态的产生、变化和消亡;
(3)进程和程序并不是一一对应的,一个程序可以包含若干个进程,一个进程可以调用多个程序。
进程标识符PID:每一个新进程都有一个唯一的PID。PPID:父进程的ID。
2.作业
正在执行的一个或多个相关进程可以形成一个作业。使用管道命令和重定向命令,一个作业可以启动多个进程。根据作业的运行方式不同,可将作业分为两大类:
(1)前台作业:运行于前台,用户可对其进行交互操作。
(2)后台作业:运行千后台,不接受终端的输入, 单向终端输出执行结果。
作业既可以在前台运行也可以在后台运行,但在同一时刻,每个用户只能有一个前台作业。
(二)进程的基本状态及转换
1.基本状态
(1)运行态(Running)
在CPU上运行。处于这种状态的进程个数不能大于CPU的数目。
(2)就绪态(Ready)
获得了CPU外的一切资源,可以随时被CPU调用
(3)阻塞态(Blocked)
也叫等待态,指进程等待某种事件发生而暂时不能运行的状态,即处于封锁状态的进程尚不具备运行条件,即使CPU空闲,它也无法使用。这种状态有时也称为不可运行状态或挂起状态。
2.状态转换
图. 进程状态转换
(三)进程的类型
1.交互进程
由shell启动,可以工作在前/后台
2.批处理进程
不需要与终端相关,提交在等待队列的作业。
3.守候进程
shell/Linux系统自动启动,工作在后台,用于监视特定服务
二、进程的启动方式
(一)手工启动进程/启动程序/执行命令
1.前台:直接输入程序名。如:#vi
2.后台:程序名后加&。如:#vi&
(二)调度启动
系统在指定时间运行指定的程序,可用at、batch和cron调度。
三、进程/作业管理的常用命令
(一)ps命令
1.功能:静态显示系统进程信息
2.格式:ps [参数]
3.参数:
-a //显示所有进程(不包括没有终端的进程)
-u //显示用户名和启动时间
-x //显示没有终端的进程
-e //显示所有进程(不显示进程状态)
4.实例:
# ps //显示当前用户进程
# ps –aux //显示所有进程信息
(二)top命令
1.功能:动态显示系统进程信息
2.格式:top
3.实例:
# top (默认每5秒钟刷新一次)
4.top的操作命令:
help //获取top的帮助
k PID //终止指定的进程
q //退出top
(三)kill命令
1.功能:终止正在运行的进程或作业
2.格式:kill [选项] PID
3.选项:-9 //当无选项的命令不能终止进程时,可强行终止指定进程
4.实例:
#kill 2683 //杀死PID为2683的进程
# kill -9 3 //杀死PID为3的进程
# kill -9 3 5 8 //一次杀死3,5,8多个进程
(四)killall命令
1.功能:终止指定程序名的所有进程
2.格式:
killall -9 程序名
3.实例:
#killall -9 vsftpd //杀死所有对应vsftpd程序的进程
(五)作业的前后台命令
1.jobs命令
(1)格式:jobs [选项]
(2)功能:显示当前所有作业
(3)选项:
-p:仅显示进程号
-l:同时显示进程号和作业号
(4)格式:jobs
(5)实例:
# jobs
# jobs –l
# jobs -p
2.fg命令
(1)功能:把后台的作业调入前台运行
(2)格式:# fg [作业编号]
(3)实例:
# fg //队首的作业调入前台运行
# fg 2 //将队列中的2号作业调入前台运行
3.bg命令
(1)功能:将前台作业或进程切换到后台运行
(2)格式:bg [作业编号]
ctrl+z 将前台程序转入后台停止运行
ctrl+c 将终止前台程序的运行
(3)实例:
#bg //将队首的作业调入后台运行
#bg 3 //将3号作业调入后台运行
(六)nice、renice命令
1.nice命令
(1)功能:指定将启动进程的优先级。
(2)格式:nice [-优先级值] 命令
(3)实例:# nice -5 ftp // 启动ftp程序,其优先级为5
2.renice命令
(1)功能:修改运行中的进程的优先级。
(2)格式:renice -优先级值 参数
(3)主要参数:
-p 进程号 //修改指定进程的优先级
-u 用户名 // 修改指定用户所启动进程的默认优先级
-g 群组号 // 修改指定群组中所有用户启动进程的默认优先级
(4)实例:
# renice -5 -u helen // 将helen用户的进程优先级调高为 -5
四、进程调度
(一)at调度 (后台运行一次)
1.功能:安排系统在指定时间运行一次程序
2.格式:at [参数] 时间
3.参数:
-d // 删除指定的调度作业
-m // 任务结束后会发送mail通知用户
-f 文件名 // 从指定文件中读取执行的命令
-q [a-z] //指定使用的队列
-l // 显示等待执行的调度作业
4. 时间的表示方法:
(1)绝对表示方法:
midnight //当天午夜
moon //当天中午
teatime //当天下午4点
hh:mm mm/dd/yy
(2)相对表示方法:
now+n minutes //从现在起向后n分钟
now+n days //从现在起向后n天
now+n hours //从现在起向后n小时
now+n weeks //从现在起向后n周
5.实例
# at 21:00 3/21/2009
>cd /back/
>tar -cvf tmp.tar /tmp
>init 0
ctrl+d //结束作业
(二)batch调度
1.功能:和at 命令功能几乎相同,唯一区别是如果不指定运行时间,进程将在系统较空闲时运行。batch 调度适合千时间上要求不高,但运行时占用系统资源较多的工作。
2. 格式:
batch [选项][时间] //batch 命令的选项同at 命令
(三)cron调度
周期性计划作业命令,现使用较少,不作详细介绍。
注:由H同志编写,欢迎批评指正、交流探讨!