Linux中的进程管理
3.1 Linux进程概述
3.2 Linux进程原理
3.3 Linux守护进程介绍
3.4 启动 Linux进程
3.5 进程的挂起及恢复
3.6 Linux进程管理
3.7 进程文件系统 PROC
3.1 Linux进程概述程序是存储在磁盘上包含可执行机器指令和数据的静态实体,而进程是在操作系统中执行的特定任务的动态实体 。
Linux操作系统包括如下三种不同类型的进程,每种进程都有其自己的特点和属性:
交互进程:由一个 shell启动的进程 。 交互进程既可以在前台运行,也可以在后台运行 。
批处理进程:这种进程和终端没有联系,是一个进程序列 。
守护进程,Linux系统启动时启动的进程,并在后台运行 。
3.2 Linux进程原理返回为了更好地对 Linux系统的进程进行高效、有针对性地管理,需要对进程的基本原理有所了解,本节将介绍
Linux系统中进程的状态以及基本的工作模式。
3.2.1 Linux进程的状态
3.2.2 Linux进程工作模式结束
3.2.1 Linux进程的状态通常在操作系统中,进程至少要有三种基本状态,
分别为:运行态、就绪态和封锁态(或阻塞态)。
运行状态是指当前进程已分配到 CPU,它的程序正在处理器上执行时的状态。处于这种状态的进程个数不能大于 CPU的数目。
— 就绪状态是指进程已具备运行条件,但因为其他进程正占用 CPU,所以暂时不能运行而等待分配
CPU的状态。
— 封锁状态是指进程因等待某种事件发生(例如等待某一输入、输出操作完成,等待其他进程发来的信号等)而暂时不能运行的状态。 返回
3.2.2 Linux进程工作模式在 Linux系统中,进程的执行模式划分为用户模式和内核模式。如果当前运行的是用户程序、
应用程序或者内核之外的系统程序,那么对应进程就在用户模式下运行;如果在用户程序执行过程中出现系统调用或者发生中断事件,就要运行操作系统(即核心)程序,进程模式就变成内核模式。在内核模式下运行的进程可以执行机器的特权指令;而且,此时该进程的运行不受用户的干预,即使是 root用户也不能干预内核模式下进程的运行。 返回
按照进程的功能和运行的程序分类,进程可划分为两大类:
一类是系统进程,只运行在内核模式,执行操作系统代码,完成一些管理性的工作,
例如内存分配和进程切换;
另外一类是用户进程,通常在用户模式中执行,并通过系统调用或在出现中断、异常时进入内核模式。
3.3 Linux守护进程介绍守护进程是 Linux系统三大进程之一,而且是系统中比较重要的一种,该进程可以完成很多工作,包括系统管理以及网络服务等。
3.3.1 守护进程简介
3.3.2 重要守护进程介绍结束返回
3.3.1 守护进程简介返回
守护进程( Daemon,也称为精灵进程)是指在后台运行而又没有终端或登录 shell与之结合在一起的进程。
守护进程经常在程序启动时开始运行,在系统结束时停止。这些进程没有控制终端,所以称为在后台运行。 Linux系统有许多标准的守护进程,其中一些周期性地运行来完成特定的任务
(例如 crond),而其余的则连续地运行,等待处理系统中发生的某些特定的事件
在引导系统时启动:此种情况下的守护进程通常在系统启动 script的执行期间被启动,
这些 script一般存放在 /etc/rc.d中。
使用守护进程启动:这个守护进程查询存放在 /var/spool/cron/crontabs目录中的一组文件,这些文件规定了需要周期性执行的任务。执行 at命令启动:在规定的时间执行一个程序。
3.3.2 重要守护进程介绍表 3-1列出了 Linux系统中一些比较重要的守护进程以及其所具有的功能,用户可以通过使用这些进程方便地使用系统以及网络服务。
返回
3.3.2 重要守护进程介绍返回守护进程 功能说明
amd 自动安装 NFS( 网络文件系统)。
apmd 高级电源管理。
httpd Web服务器。
xinetd 支持多种网络服务的核心守候
arpwatch 记录日志并构建一个在 LAN接口上看到的以太网地址和 IP地址对数据库。
autofs 自动安装管理进程 automount,与 NFS相关,依赖于 NIS。
3.4 启动 Linux进程返回在系统中,键入需要运行的程序的程序名,执行一个程序,其实也就是启动了一个进程 。
3.4.1 手工启动
3.4.2 在指定时刻执行命令序列 ——at命令
3.4.3 在资源比较空闲的时候执行命令 ——batch命令
3.4.4 不断重复执行某些命令 ——cron命令结束
3.4.5 操作 cron后台进程的表格 ——crontab命令
3.4.1 手工启动由用户输入命令,直接启动一个进程便是手工启动进程。但手工启动进程又可以分为很多种,根据启动的进程类型不同、性质不同,
实际结果也不一样,下面分别介绍。
返回
1.前台启动
这是手工启动一个进程的最常用的方式。一般地,用户键入一个命令,ls–l”,这就已经启动了一个进程,而且是一个前台的进程。这时候系统其实已经处于一个多进程状。
2.后台启动
直接从后台手工启动一个进程用得比较少一些,
除非是该进程甚为耗时,且用户也不急着要看到处理结果的时候。
3.4.2 在指定时刻执行命令序列 ——at命令有时候须要对系统进行一些比较费时而且占用资源的维护工作,这些工作适合在深夜进行,这时候用户就可以事先进行调度安排,指定任务运行的时间或者场合,到时候系统会自动完成这一切工作。用户使用 at命令在指定时刻执行指定的命令序列 at命令可以只指定时间,也可以时间和日期一起指定。
返回
at命令的语法格式:
例:
指定在今天下午 6,35执行某命令。假设现在时间是中午 12,35,2008年 3月 11日
# at 6:35pm
#at 18:35
# at 18:35 today
# at now + 6 hours
3.4.3 在资源比较空闲的时候执行命令 ——batch命令
batch命令用低优先级运行作业,该命令几乎和 at命令的功能完全相同,惟一的区别在于,at命令是在指定时间,很精确的时刻执行指定命令;而 batch
却是在系统负载较低,资源比较空闲的时候执行命令,这个主要是由系统来决定执行的,因而用户的干预权力很小。该命令适合于执行占用资源较多的命令。
返回
3.4.4 不断重复执行某些命令 ——cron命令
当系统在指定时间完成任务后,一切就结束了。但是在很多时候需要不断重复一些命令,比如:某公司每周一自动向员工报告头一周公司的活动情况,这时候就需要使用 cron命令来完成任务了。
cron命令在系统启动时就由一个 shell脚本自动启动,
进入后台(所以不需要使用,&” 符号)。一般的用户没有运行该命令的权限,虽然超级用户可以手工启动 cron,不过还是建议将其放到 shell脚本中由系统自行启动。
返回 结束
cron启动以后,将首先检查是否有用户设置了 crontab文件,如果没有就转入“休眠”
状态,释放系统资源。所以该后台进程占用资源极少。它每分钟“醒”过来一次,
查看当前是否有需要运行的命令。命令执行结束后,任何输出都将作为邮件发送给
crontab的所有者,或者是 /etc/crontab文件中 MAILTO环境变量中指定的用户。
3.4.5 操作 cron后台进程的表格 ——crontab命令
crontab命令用于安装、删除或者列出用于驱动 cron后台进程的表格。用户把要执行的命令序列放到 crontab文件中以获得执行。每个用户都可以有自己的 crontab文件。
在 /var/spool/cron下的 crontab文件不可以直接创建或者直接修改。 crontab文件是通过 crontab命令得到的。
该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。
返回
3.5 进程的挂起及恢复返回作业控制允许将进程挂起并可以在需要时恢复进程的运行,
被挂起的作业恢复后将从中止处开始继续运行。只要在键盘上使用组合键 [Ctrl+Z],即可挂起当前的前台作业。
在键盘上按组合键 [Ctrl+Z]后,将挂起当前执行的命令 cat。
使用 jobs命令可以显示 shell的作业清单,包括具体的作业、
作业号以及作业当前所处的状态。
恢复进程执行时,有两种选择:用 fg命令将挂起的作业放回到前台执行;用 bg命令将挂起的作业放到后台执行。
结束
3.6 Linux进程管理返回下面将要详细介绍几个进程管理的命令。使用这些命令,用户可以实时、全面、准确地了解系统中运行进程的相关信息,从而对这些进程进行相应的挂起、中止等操作。
结束
3.6.1 使用 ps命令查看进程状态
3.6.2 使用 top命令查看进程状态
3.6.3 使用 kill命令终止进程
3.6.4 使用 sleep命令暂停进程
3.6.1 使用 ps命令查看进程状态
ps命令是查看进程状态的最常用的命令,
可以提供关于进程的许多信息。根据显示的信息可以确定哪个进程正在运行、哪个进程被挂起、进程已运行了多久、进程正在使用的资源、进程的相对优先级,以及进程的标识号( PID) 等信息。
返回
3.6.2 使用 top命令查看进程状态
top命令和 ps命令的基本作用是相同的,
显示系统当前的进程及其状态,但是 top是一个动态显示过程,可以通过用户按键来不断刷新当前状态。如果在前台执行,该命令将独占前台,直到用户终止该程序为止。
top命令的一般格式是,top [bciqsS][d <间隔秒数 >][n <执行次数 >]。
返回
3.6.3 使用 kill命令终止进程通常终止一个前台进程可以使用 [Ctrl+C]组合键。但是,对于一个后台进程就须用 kill命令来终止。 kill命令是通过向进程发送指定的信号来结束相应进程。在默认情况下,采用编号为 15的 TERM
信号。 TERM信号将终止所有不能捕获该信号的进程。对于那些可以捕获该信号的进程就要用编号为 9的 KILL信号,强行杀掉该进程。
kill命令的一般格式是,kill [-s 信号 |-p ] 进程号或者 kill -l [信号 ]。
返回
3.6.4 使用 sleep命令暂停进程
sleep命令的功能是使进程暂停执行一段时间。其一般格式是,sleep 时间值。
其中,“时间值”参数以秒为单位,即使进程暂停由时间值所指定的秒数。此命令大多用于 shell程序设计中,是两条命令执行之间停顿指定的时间。
最基本的用法是直接在 shell下,使用该命令,使得 shell的工作状态暂时睡眠。 返回
3.7 进程文件系统 PROC
返回
PROC文件系统是一个虚拟的文件系统,通过文件系统的接口实现,用于输出系统的运行状态。它以文件系统的形式,为操作系统本身和应用进程之间的通信提供了一个界面,使应用程序能够安全、方便地获得系统当前的运行状况和内核的内部数据信息,并可以修改某些系统的配置信息。
另外,由于 PROC以文件系统的接口实现,因此用户可以像访问普通文件一样对其进行访问,但它只存在于内存之中,并不存在于真正的物理磁盘当中。所以,当系统重启和电源关闭的时候,该系统中的数据和信息将全部消失。
结束