linux是一个多用户、多任务操作系统。在这样的系统中,各种计算机资源的分配和管理都以进程为单位,为了协调多个进程对这种共享资源的访问,操作系统要跟踪多个进程的活动,以及他们对系统资源的使用情况,从而实施对进程和资源的动态管理。
进程和作业的基本概念
进程和作业简介
1.进程
进程是指一个具有独立功能的程序的一次运行过程,也是系统进行资源分配和调度的基本单位,即每个程序模块和它执行所处理的数据组成了进程。进程不是程序,但由程序产生。进程和程序的区别在于:程序是一系列指令的集合,是静态的概念,而进程则是程序的一次运行过程,是动态的概念;程序可以长期保存,而进程只能暂时存在、动态的产生、变化和消亡。进程和程序并不是一一对应的,一个程序可以包含若干个进程,一个进程可以调用多个程序。
2.作业
正在执行的一个或多个相关进程可以形成一个作业。使用管道命令和重定向命令,一个作业可以启动多个进程。
根据作业的运行方式不同,可将作业分为两大类
前台作业:运行与前台,用户可对其进行交互操作
后台作业:运行于后台,不接受终端的输入,单行终端输出执行结果
作业既可以在前台运行也可以在后台运行,但在同一时刻,每个用户只能有一个前台作业
进程的基本状态及其转换
1.进程的基本状态
通常在操作系统中,进程至少要有3种基本状态,分别为:运行态、就绪态和阻塞态。进程状态及其变化如下所示
运行态(running):指当前进程分配到CPU,它的程序正在处理器上执行时的状态。处于这种状态的进程个数不能大于CPU的数目。在单CPU机制中,任何时刻处于运行状态的进程至多有一个。
就绪态(ready):指进程已具备运行条件,但因为其他进程正占用CPU,暂时不能运行而等待分配CPU的状态。一旦CPU分给它,立即就可运行。
阻塞态(blocked):也叫等待态,指进程等待某种事件发生而暂时不能运行的状态,即处于封锁状态的进程尚不具备运行条件,即使CPU空闲,它也无法使用。这种状态有时也称为不可运行状态或挂起状态。
2.进程间的转移
一个运行的进程可因满足某种条件而放弃CPU,变成封锁状态;以后条件得到满足时,又变成就绪态;仅当CPU被释放时才从就绪进程中挑选一个合适的进程去执行,被选中的进程从就绪态变成运行态。
进程的类型
linux操作系统包括3种不同类型的进程,每个进程都有其自己的特点和属性。
交互进程:由一个shell启动的进程,既可以运行在前台,也可以运行在后台
批处理进程:不需要与终端相关,提交在等待队列的作业。
守候进程:linux系统启动时自动启动,并在后台运行,用于监视特定服务。
linux守候进程介绍
守候进程是linux系统的三大进程之一,而且是系统中比较重要的一种,该进程可以完成很多工作,包括系统管理、网络服务等。下面介绍守候进程。
1.守候进程介绍
守候进程是在后台运行而没有终端或登录shell与之结合在一起的进程。守候进程在程序启动时开始运行,在系统结束时停止。这些进程没有终端控制,所以称为在后台运行。linux系统有许多标准的守候进程,其中一些周期性的运行来完成特定的任务,其余的连续运行,等待处理系统中发生的某些特定的事件。启动守候进程有如下几种方法。
在引导系统时启动:此种情况下的守候进程通常在系统启动script的执行期间被启动,这些script一般存放在/etc/rc.d中。
手动从shell提示符启动:任何具有相应的执行权限的用户都可以使用这种方法启动守候进程
使用crond守候进程启动:这个守候进程是放在/var/spool/cron/crontabs目录中的一组文件,这些文件规定了需要周期性执行的任务
执行at命令启动:在规定的一个日期执行一个程序。
2.重要的守候进程介绍
下面列出了linux系统中一些比较重要的守候进程及其所具有的功能,用户可以通过这些进程方便的使用系统以及网络服务。
守候进程 功能说明
amd 自动安装nfs(网络文件系统)
apmd 高级电源管理
httpd web服务器
xinetd 支持多种网络服务的核心守候进程
crond linux下的计划任务
dhcpd 启动一个dhcp(动态ip地址分配)服务器
gated 网关路由守候进程,使用动态的ospf路由选择协议
lpd 打印服务
named dns服务
netfs 安装nfs、Samba、netware网络文件系统
network 激活已配置网络接口的脚本程序
nfsd nfs服务器
sendmail 邮件服务器sendmail
smb Samba文件共享/打印服务
snmpd 本地简单网络管理守候进程
syslog 一个让系统引导时启动syslog和klogd系统日志守候进程的脚本
进程和作业启动方式
进程是由于一个程序执行而启动的,在RHEL5系统中启动进程的方式有以下两种。
1.手工启动
手工启动是指由用户输入shell命令后直接启动进程,又可分为前台启动和后台启动。
前台:这是手工启动进程最常用的方式,一般直接输入程序名(如:vi)就可以启动一个前台进程
后台:直接在后台手工启动进程用得比较少一些。从后台启动一个进程其实就是在程序名后加&(如:vi&),输入命令后,出现数字代表该进程的进程号
上述两种启动方式有个共同的特点,就是新进程都是由当前shell进程产生的,也就是说shell创建了新进程,因此称这种关系为进程间的父子关系。shell是父进程,新进程是子进程。一个父进程可以有多个子进程。
2.调度启动
系统在指定时间运行指定的程序,可用at、batch和cron调度。