《 Linux操作系统》第五讲 进程管理 学时计划:4学时理论,0学时实验 (无实验教学内容) 教学大纲: 1、进程 2、进程的监控 3、进程管理 4、/PROC文件系统 5、讨论与思考 Linux的进程管理与UNIX操作系统有着很多共同点,但也有 些独特的特性。 Linux是一种动态系统,能够适应不断变化的计算需 求。 Linux计算需求的表现是以进程的通用抽象为中心的。进程可以 是短期的,也可以是长期的,因此对进行及其调度进行一般管理就显 得极为重要。 本讲介绍 Linux进程的基本概念和生命周期,并重点介绍 Linux 的进程查看、管理和调度的工具的使用方法。 、进程 1.1进程的概念 Linux是一个多用户多任务的操作系统 多用户是指多个用户可以在同一时间使用同一个1inux系统;多 任务是指在 Linux下可以同时执行多个任务,更详细的说,1inux采 用了分时管理的方法,所有的任务都放在一个队列中,操作系统根据 每个任务的优先级为每个任务分配合适的时间片,每个时间片很短, 用户根本感觉不到是多个任务在运行,从而使所有的任务共同分享系 统资源,因此 Linux可以在一个任务还未执行完时,暂时挂起此任务, 又去执行另一个任务,过一段时间以后再回来处理这个任务,直到这 个任务完成,才从任务队列中去除。 1|(anx操作系统》讲稿/河南中医学院/阮晓龙/ phactcm.edu.cn
1 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 《Linux 操作系统》第五讲: 进程管理 学时计划:4 学时 理论,0 学时 实验 (无实验教学内容) 教学大纲: 1、进程 2、进程的监控 3、进程管理 4、/PROC 文件系统 5、讨论与思考 Linux 的进程管理与 UNIX 操作系统有着很多共同点,但也有一 些独特的特性。Linux 是一种动态系统,能够适应不断变化的计算需 求。Linux 计算需求的表现是以进程的通用抽象为中心的。进程可以 是短期的,也可以是长期的,因此对进行及其调度进行一般管理就显 得极为重要。 本讲介绍 Linux 进程的基本概念和生命周期,并重点介绍 Linux 的进程查看、管理和调度的工具的使用方法。 一、进程 1.1 进程的概念 Linux 是一个多用户多任务的操作系统。 多用户是指多个用户可以在同一时间使用同一个 linux 系统;多 任务是指在 Linux 下可以同时执行多个任务,更详细的说,linux 采 用了分时管理的方法,所有的任务都放在一个队列中,操作系统根据 每个任务的优先级为每个任务分配合适的时间片,每个时间片很短, 用户根本感觉不到是多个任务在运行,从而使所有的任务共同分享系 统资源,因此 Linux 可以在一个任务还未执行完时,暂时挂起此任务, 又去执行另一个任务,过一段时间以后再回来处理这个任务,直到这 个任务完成,才从任务队列中去除
上述的描述是在一台计算机上只有一颗CPU,并且该CP只有 个核心的情形,在这种环境下,虽然系统可以运行多个任务,但是在 某一个时间点,CP只能执行一个进程。但是如果一台计算机有多颗 CPU,每颗CPU有多个核心的情形下,多任务的处理方式是不同的, 因此在某个时间点上,可以有多个进程同时运行。 进程的的基本定义是:在自身的虚拟地址空间运行的一个独立的 程序,从操作系统的角度来看,所有在系统上运行的东西,都可以称 为一个进程。 需要注意的是程序和进程是有区别的,进程虽然有程序产生,但 是它并不是程序,程序是一个进程指令的集合,它可以启用一个或多 个进程,同时,程序只占用磁盘空间,而不占用系统运行资源,而进 程仅占用系统内存空间,是动态的、可变的,关闭进程,占用的内存 资源随之释放 例如,用户在 Linux上打开一个文件、就会产生一个打开文件的 进程,关闭文件,进程也随机关闭。如果在系统上启动一个服务,例 如启动 tomcat服务,就会产生一个对应的java的进程。而如果启动 apache服务,就会产生多个httpd进程。 关于进程的更详细的介绍,请参阅《操作系统原理》。 1.2进程的分类 按照进程的功能和运行的程序分类,进程可划分为两大类 系统进程:可以执行内存资源分配和进程切换等管理工作。该进 程的运行不受用户的干预,即使是root用户也不能干预系统进程的 运行。 用户进程:通过执行用户程序、应用程序或内核之外的系统程序 而产生的进程,此类进程可以在用户的控制下运行或关闭。 用户进程又可以细分为交互进程、批处理进程和守护进程三类。 交互进程:由一个shel1终端启动的进程,在执行过程中,需要 与用户进行交互操作,可以运行于前台,也可以运行在后台。 批处理进程:该进程是一个进程集合,负责按顺序启动其他的进 程 2《Linux操作系统》讲稿/河南中医学院/阮晓龙/rx@hactcm.edu.cn
2 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 上述的描述是在一台计算机上只有一颗 CPU,并且该 CPU 只有一 个核心的情形,在这种环境下,虽然系统可以运行多个任务,但是在 某一个时间点,CPU 只能执行一个进程。但是如果一台计算机有多颗 CPU,每颗 CPU 有多个核心的情形下,多任务的处理方式是不同的, 因此在某个时间点上,可以有多个进程同时运行。 进程的的基本定义是:在自身的虚拟地址空间运行的一个独立的 程序,从操作系统的角度来看,所有在系统上运行的东西,都可以称 为一个进程。 需要注意的是程序和进程是有区别的,进程虽然有程序产生,但 是它并不是程序,程序是一个进程指令的集合,它可以启用一个或多 个进程,同时,程序只占用磁盘空间,而不占用系统运行资源,而进 程仅占用系统内存空间,是动态的、可变的,关闭进程,占用的内存 资源随之释放。 例如,用户在 Linux 上打开一个文件、就会产生一个打开文件的 进程,关闭文件,进程也随机关闭。如果在系统上启动一个服务,例 如启动 tomcat 服务,就会产生一个对应的 java 的进程。而如果启动 apache 服务,就会产生多个 httpd 进程。 关于进程的更详细的介绍,请参阅《操作系统原理》。 1.2 进程的分类 按照进程的功能和运行的程序分类,进程可划分为两大类: 系统进程:可以执行内存资源分配和进程切换等管理工作。该进 程的运行不受用户的干预,即使是 root 用户也不能干预系统进程的 运行。 用户进程:通过执行用户程序、应用程序或内核之外的系统程序 而产生的进程,此类进程可以在用户的控制下运行或关闭。 用户进程又可以细分为交互进程、批处理进程和守护进程三类。 交互进程:由一个 shell 终端启动的进程,在执行过程中,需要 与用户进行交互操作,可以运行于前台,也可以运行在后台。 批处理进程:该进程是一个进程集合,负责按顺序启动其他的进 程
守护进程:守护进程是一直运行的一种进程,经常在 Linux系统 启动时启动,在系统关闭时终止。它们独立于控制终端并且周期性的 执行某种任务或等待处理某些发生的事件。例如htpd进程,一直处 于运行状态,等待用户的访问。 1.3进程的属性 1.3.1进程的状态 个进程在其生存期内,可处于一组不同的状态下,称为进程状 态。进程状态保存在进程任务结构的 state字段中。 当进程正在等待系统中的资源而处于等待状态时,则称其处于睡 眠等待状态。在 Linux系统中,睡眠等待状态分为可中断的和不可中 断的等待状态。 用户运行态 内核运行态 系统调用或中断返回 中断,中断返回 可状态( 睡眠 终止 僵死状态 zombie 睡眠 暂停 调度 不可中断睡眠状态 暂停状态 唤醒 继续 COIL 就绪态 running 技术成就梦想 图5-1进程状态及转换关系 进程的状态有五种情况,具体如下。 (1)运行状态( TASK RUNNING)。 当进程正在被CPU执行,或已经准备就绪随时可由调度程序执行 则称该进程为处于运行状态( running)。若此时进程没有被CPU执行, 则称其处于就绪运行状态。见图5-1中3个标号为0的状态。进程可 以在内核态运行,也可以在用户态运行。当一个进程在内核代码中运 行时,称其处于内核运行态,或简称为内核态;当一个进程正在执行 3l(anx操作系统》讲稿/河南中医学院/阮晓龙/ phactcm.edu.cn
3 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 守护进程:守护进程是一直运行的一种进程,经常在 Linux 系统 启动时启动,在系统关闭时终止。它们独立于控制终端并且周期性的 执行某种任务或等待处理某些发生的事件。例如 httpd 进程,一直处 于运行状态,等待用户的访问。 1.3 进程的属性 1.3.1 进程的状态 一个进程在其生存期内,可处于一组不同的状态下,称为进程状 态。进程状态保存在进程任务结构的 state 字段中。 当进程正在等待系统中的资源而处于等待状态时,则称其处于睡 眠等待状态。在 Linux 系统中,睡眠等待状态分为可中断的和不可中 断的等待状态。 进程的状态有五种情况,具体如下。 (1)运行状态(TASK_RUNNING)。 当进程正在被 CPU 执行,或已经准备就绪随时可由调度程序执行, 则称该进程为处于运行状态(running)。若此时进程没有被 CPU 执行, 则称其处于就绪运行状态。见图 5-1 中 3 个标号为 0 的状态。进程可 以在内核态运行,也可以在用户态运行。当一个进程在内核代码中运 行时,称其处于内核运行态,或简称为内核态;当一个进程正在执行 图 5-1 进程状态及转换关系
用户自己的代码时,称其为处于用户运行态(用户态)。当系统资源 已经可用时,进程就被唤醒而进入准备运行状态,该状态称为就绪态 这些状态在内核中表示方法相同,都被称为处于 TASK RUNNING状态。 当一个新进程刚被创建出后就处于本状态中 (2)可中断睡眠状态( TASK INTERRUPTIBLE)。 当进程处于可中断等待(睡眠)状态时,系统不会调度该进程执 行。当系统产生一个中断或者释放了进程正在等待的资源,或者进程 收到一个信号,都可以唤醒进程转换到就绪状态(即可运行状态)。 (3)不可中断睡眠状态( TASK UNINTERRUPTIBLE)。 除了不会因为收到信号而被唤醒,该状态与可中断睡眠状态类似。 但处于该状态的进程只有被使用wake_upO函数明确唤醒时才能转换 到可运行的就绪状态。该状态通常在进程需要不受干扰地等待或者所 等待事件会很快发生时使用。 (4)暂停状态( TASK STOPPED)。 当进程收到信号 SIGSTOP、 SIGTSTP、 SIGTTIN或 SIGTTOU时就会 进入暂停状态。可向其发送 SIGCONT信号让进程转换到可运行状态。 进程在调试期间接收到任何信号均会进入该状态。 (5)僵死状态( TASK ZOMBIE)。 当进程已停止运行,但其父进程还没有调用wait0询问其状态 时,则称该进程处于僵死状态。为了让父进程能够获取其停止运行的 信息,此时子进程的任务数据结构信息还需要保留着。一旦父进程调 用wait(取得了子进程的信息,则处于该状态进程的任务数据结构 就会被释放。 当一个进程的运行时间片用完,系统就会使用调度程序强制切换 到其他的进程去执行。另外,如果进程在内核态执行时需要等待系统 的某个资源,此时该进程就会调用 sleep on(或 interruptible_ sleep_on(自愿地放弃CPU的使用权,而让调度程序 去执行其他进程。进程则进入睡眠状态( TASK UNINTERRUPTIBLE或 TASK INTERRUPTIBLE)。 只有当进程从"内核运行态"转移到"睡眠状态"时,内核才会进行 进程切换操作。在内核态下运行的进程不能被其他进程抢占,而且一 4|am操作系统》讲稿/河南中医学院/阮晓龙/@phactcm.edu.cn
4 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 用户自己的代码时,称其为处于用户运行态(用户态)。当系统资源 已经可用时,进程就被唤醒而进入准备运行状态,该状态称为就绪态。 这些状态在内核中表示方法相同,都被称为处于 TASK_RUNNING状态。 当一个新进程刚被创建出后就处于本状态中。 (2)可中断睡眠状态(TASK_INTERRUPTIBLE)。 当进程处于可中断等待(睡眠)状态时,系统不会调度该进程执 行。当系统产生一个中断或者释放了进程正在等待的资源,或者进程 收到一个信号,都可以唤醒进程转换到就绪状态(即可运行状态)。 (3)不可中断睡眠状态(TASK_UNINTERRUPTIBLE)。 除了不会因为收到信号而被唤醒,该状态与可中断睡眠状态类似。 但处于该状态的进程只有被使用wake_up()函数明确唤醒时才能转换 到可运行的就绪状态。该状态通常在进程需要不受干扰地等待或者所 等待事件会很快发生时使用。 (4)暂停状态(TASK_STOPPED)。 当进程收到信号 SIGSTOP、SIGTSTP、SIGTTIN 或 SIGTTOU 时就会 进入暂停状态。可向其发送 SIGCONT 信号让进程转换到可运行状态。 进程在调试期间接收到任何信号均会进入该状态。 (5)僵死状态(TASK_ZOMBIE)。 当进程已停止运行,但其父进程还没有调用 wait()询问其状态 时,则称该进程处于僵死状态。为了让父进程能够获取其停止运行的 信息,此时子进程的任务数据结构信息还需要保留着。一旦父进程调 用 wait()取得了子进程的信息,则处于该状态进程的任务数据结构 就会被释放。 当一个进程的运行时间片用完,系统就会使用调度程序强制切换 到其他的进程去执行。另外,如果进程在内核态执行时需要等待系统 的 某 个 资 源 , 此 时 该 进 程 就 会 调 用 sleep_on() 或 interruptible_sleep_on()自愿地放弃 CPU 的使用权,而让调度程序 去执行其他进程。进程则进入睡眠状态(TASK_UNINTERRUPTIBLE 或 TASK_INTERRUPTIBLE)。 只有当进程从"内核运行态"转移到"睡眠状态"时,内核才会进行 进程切换操作。在内核态下运行的进程不能被其他进程抢占,而且一
个进程不能改变另一个进程的状态。为了避免进程切换时造成内核数 据错误,内核在执行临界区代码时会禁止一切中断。 1.3.2父进程和子进程 在 Linux系统中,进程ID(用PID表示)是区分不同进程的唯 标识,它们的大小是有限制的,最大ID为32768,用UID和GID 分别表示启动这个进程的用户和用户组。所有的进程都是PID为1的 init进程的后代,内核在系统启动的最后阶段启动init进程,因而, 这个进程是 Linux下所有进程的父进程,用PPID表示父进程。 使用ps命令查看mysq1的进程信息,具体如下。 zhaodongfeng@ TeachServer - S ps auxlgrep mysql 7100.02.617697227484? Ssl Oct23 4: 17 /usr/sbin/mysqld 1000 4980 0.0 0.1 7928 1036 pts/0 S+ 23: 36 0: 00 grep -=auto mysql 相对于父进程,就存在子进程,一般每个进程都必须有一个父进 程,父进程与子进程之间是管理与被管理的关系,当父进程停止时, 子进程也随之消失,但是子进程关闭,父进程不一定终止。 如果父进程在子进程退出之前就退出,则所有子进程就变成的 个孤儿进程,如果没有相应的处理机制的话,这些孤儿进程就会一直 处于僵死状态,资源无法释放,此时解决的办法是在启动的进程内找 个进程作为这些孤儿进程的父进程,或者直接让init进程作为它 们的父进程,进而释放孤儿进程占用的资源。 进程的监控 不管是 Linux系统管理员还是程序开发人员,在工作中都不可避 免的需要查看系统进程的运行情况,以观测系统的运行情况和进行系 统维护操作。 2.1查看系统进程 2.1.1ps ps是最常用的监视进程的命令。ps命令给出了有关进程的所有 有用信息。由于UNIX和 Linux系统的历史比较复杂,发行的版本比 较混乱,所以ps的用法很多,并且比较混乱。 5|am操作系统》讲稿/河南中医学院/阮晓龙/ phactcm.edu.cn
5 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 个进程不能改变另一个进程的状态。为了避免进程切换时造成内核数 据错误,内核在执行临界区代码时会禁止一切中断。 1.3.2 父进程和子进程 在 Linux 系统中,进程 ID(用 PID 表示)是区分不同进程的唯 一标识,它们的大小是有限制的,最大 ID 为 32768,用 UID 和 GID 分别表示启动这个进程的用户和用户组。所有的进程都是 PID 为 1 的 init 进程的后代,内核在系统启动的最后阶段启动 init 进程,因而, 这个进程是 Linux 下所有进程的父进程,用 PPID 表示父进程。 使用 ps 命令查看 mysql 的进程信息,具体如下。 zhaodongfeng@TeachServer:~$ ps aux|grep mysql mysql 710 0.0 2.6 176972 27484 ? Ssl Oct23 4:17 /usr/sbin/mysqld 1000 4980 0.0 0.1 7928 1036 pts/0 S+ 23:36 0:00 grep --color=auto mysql 相对于父进程,就存在子进程,一般每个进程都必须有一个父进 程,父进程与子进程之间是管理与被管理的关系,当父进程停止时, 子进程也随之消失,但是子进程关闭,父进程不一定终止。 如果父进程在子进程退出之前就退出,则所有子进程就变成的一 个孤儿进程,如果没有相应的处理机制的话,这些孤儿进程就会一直 处于僵死状态,资源无法释放,此时解决的办法是在启动的进程内找 一个进程作为这些孤儿进程的父进程,或者直接让 init 进程作为它 们的父进程,进而释放孤儿进程占用的资源。 二、进程的监控 不管是 Linux 系统管理员还是程序开发人员,在工作中都不可避 免的需要查看系统进程的运行情况,以观测系统的运行情况和进行系 统维护操作。 2.1 查看系统进程 2.1.1ps ps 是最常用的监视进程的命令。ps 命令给出了有关进程的所有 有用信息。由于 UNIX 和 Linux 系统的历史比较复杂,发行的版本比 较混乱,所以 ps 的用法很多,并且比较混乱
ps提供了进程的一次性的查看,它所提供的查看结果并不是动 态连续的,而是命令执行时的进程情况。 命令: shell>ps[参数] 命令参数 长格式输出 u按用户名和启动时间的顺序来显示进程; 用任务格式来显示进程; f用树形格式来显示进程 显示所有用户的所有进程(包括其它用户); x显示无控制终端的进程 r显示运行中的进程 Ww避免详细参数被截断 命令说明: (1)ps命令的参数需要以短横杠线开头。 (2)ps命令的参数可组合使用,例如 ps aux或 ps lax等 (3)ps命令使用aux和1ax参数时可以显示当前系统上运行的 所有进程的信息,显示信息的字段的具体含义见表5-1所示。 如下表所示。 表5-1PS命令查看进程信息的字段含义一览表 序号 含义 进程的属主 PID 进程的ID PPID 、、 父进程的ID %cPU 进程占用的CPU百分比 DOMEM 占用内存的百分比 进程的NICE值,数值大,表示较少占用CPU时间,优先级低 7 VSZ 进程占用的虚拟内存的大小 8 RSS 驻留内存中页的数量(也是管理内存的单位,通常为4K)。 进程所在终端的ID号。 10 WCHAN 正在等待的进程资源 11 START 启动进程的时间 6《Linux操作系统》讲稿/河南中医学院/阮晓龙/rx@hactcm.edu.cn
6 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn ps 提供了进程的一次性的查看,它所提供的查看结果并不是动 态连续的,而是命令执行时的进程情况。 命令: shell>ps [参数] 命令参数: l 长格式输出; u 按用户名和启动时间的顺序来显示进程; j 用任务格式来显示进程; f 用树形格式来显示进程; a 显示所有用户的所有进程(包括其它用户); x 显示无控制终端的进程; r 显示运行中的进程; ww 避免详细参数被截断; 命令说明: (1)ps 命令的参数需要以短横杠线开头。 (2)ps 命令的参数可组合使用,例如 ps aux 或 ps lax 等。 (3)ps 命令使用 aux 和 lax 参数时可以显示当前系统上运行的 所有进程的信息,显示信息的字段的具体含义见表 5-1 所示。 如下表所示。 表 5-1 PS 命令查看进程信息的字段含义一览表 序号 字段 含义 1 USER 进程的属主。 2 PID 进程的 ID。 3 PPID 父进程的 ID。 4 %CPU 进程占用的 CPU 百分比。 5 %MEM 占用内存的百分比。 6 NI 进程的 NICE 值,数值大,表示较少占用 CPU 时间,优先级低。 7 VSZ 进程占用的虚拟内存的大小。 8 RSS 驻留内存中页的数量(也是管理内存的单位,通常为 4K)。 9 TTY 进程所在终端的 ID 号。 10 WCHAN 正在等待的进程资源。 11 START 启动进程的时间
12 TIME 进程已经消耗CPU的时间。 13 COMMAND 命令的名称和参数 进程状态,常用字母代表具体的状态。具体内容如下 D睡眠中,等待I/O设备。 Uninterruptible sleep( usually Io) R正在运行中的进程,可运行的进程。 s处于休眠状态,可以被唤醒 T停止或被追踪的进程。 W进入内存交换。(从内核26开始无效) X死掉的进程。(很难见到Ⅹ进程状态) Z僵尸进程。(已经结束却没有释放系统资源的进程) 14 STAT 在进程状态中,常用的附加标志的具体含义如下。 ps aux 命令说明 (1) ps aux命令显示了系统上运行的所有进程的信息,这些信 息的字段代表的具体含义参考表5-1。 (2) ps aux可以和more结合使用,实现分页查看进程信息 具体命令为 shell>ps aux more (3) ps aux命令可以将执行的结果存入文本文件,具体的命令 为 feng/ps-20111030 tx shell>cat /home/zhaodongfeng/ps-20111030 txt shell>more/home/zhaodongfeng/ps-20111030 txt 7|(am操作系统》讲稿/河南中医学院/阮晓龙/@phactcm.edu.cn
7 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 12 TIME 进程已经消耗 CPU 的时间。 13 COMMAND 命令的名称和参数。 14 STAT 进程状态,常用字母代表具体的状态。具体内容如下。 D 睡眠中,等待 I/O 设备。Uninterruptible sleep (usually IO) R 正在运行中的进程,可运行的进程。 S 处于休眠状态,可以被唤醒。 T 停止或被追踪的进程。 W 进入内存交换。(从内核 2.6 开始无效) X 死掉的进程。(很难见到 X 进程状态) Z 僵尸进程。(已经结束却没有释放系统资源的进程) 在进程状态中,常用的附加标志的具体含义如下。 ps aux 命令说明: (1)ps aux 命令显示了系统上运行的所有进程的信息,这些信 息的字段代表的具体含义参考表 5-1。 (2)ps aux 可以和 more 结合使用,实现分页查看进程信息。 具体命令为: shell>ps aux |more (3)ps aux 命令可以将执行的结果存入文本文件,具体的命令 为: shell>ps aux > /home/zhaodongfeng/ps-20111030.txt shell>cat /home/zhaodongfeng/ps-20111030.txt shell>more /home/zhaodongfeng/ps-20111030.txt
(4) ps aux和grep结合,可以方便的提取指定程序的进程。 例如查看 mysqld和 apache进程的具体命令为: shell>ps aux grep mysqld shell>ps aux grep apache2 2.1.3ps1ax ps的另外一个组合 ps lax也经常使用,通过 ps lax主要可以 查看父进程ID(PPID)和进程优先级(NI)。 ps lax由于不显示进程 属主的用户名,而是显示了UID,因此命令执行的性能要比 ps aux 更快。 ps aux在执行时,首先读取进程属主的UID,之后再讲UID转 换为用户名后才输出。 ps lax和 ps aux使用的方法基本一致,在此不再累述 2.2即时跟踪进程信息 ps命令可以一次性的给出当前系统中进程信息的快照,但是这 样的信息往往缺乏时效性。当管理员需要实时查看系统的进程信息时, 就显得不是很方便。 和ps不一致的是,top是动态监视系统任务的工具,top输出 的结果是连续的 命令 shel>top[参数] 命令参数: b以批量模式运行,但不能接受命令行输入。 c显示命令行,而不仅仅是命令名。 dN显示两次刷新时间的间隔,比如d5,表示两次刷新间隔为5秒。 -i禁止显示空闲进程或僵尸进程 nNUM显示更新次数,然后退出。比如-n5,表示top更新5次数据就退出。 pPD仅监视指定进程的ID,PD是一个数值 -q不经任何延时就刷新。 -s安全模式运行,禁用一些效互指令。 S累积模式,输出每个进程的总的CPU时间,包括已死的子进程。 命令说明 (1)top命令执行显示的信息会占满全屏幕,默认情况下是10s 8《Linux操作系统》讲稿/河南中医学院/阮晓龙/rx@hatem.edu.cn
8 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn (4)ps aux 和 grep 结合,可以方便的提取指定程序的进程。 例如查看 mysqld 和 apache 进程的具体命令为: shell>ps aux |grep mysqld shell>ps aux |grep apache2 2.1.3ps lax ps 的另外一个组合 ps lax 也经常使用,通过 ps lax 主要可以 查看父进程 ID(PPID)和进程优先级(NI)。ps lax 由于不显示进程 属主的用户名,而是显示了 UID,因此命令执行的性能要比 ps aux 更快。ps aux 在执行时,首先读取进程属主的 UID,之后再讲 UID 转 换为用户名后才输出。 ps lax 和 ps aux 使用的方法基本一致,在此不再累述。 2.2 即时跟踪进程信息 ps 命令可以一次性的给出当前系统中进程信息的快照,但是这 样的信息往往缺乏时效性。当管理员需要实时查看系统的进程信息时, 就显得不是很方便。 和 ps 不一致的是,top 是动态监视系统任务的工具,top 输出 的结果是连续的。 命令: shell>top [参数] 命令参数: -b 以批量模式运行,但不能接受命令行输入。 -c 显示命令行,而不仅仅是命令名。 -d N 显示两次刷新时间的间隔,比如 -d 5,表示两次刷新间隔为 5 秒。 -i 禁止显示空闲进程或僵尸进程。 -n NUM 显示更新次数,然后退出。比如-n 5,表示 top 更新 5 次数据就退出。 -p PID 仅监视指定进程的 ID,PID 是一个数值。 -q 不经任何延时就刷新。 -s 安全模式运行,禁用一些效互指令。 -S 累积模式,输出每个进程的总的 CPU 时间,包括已死的子进程。 命令说明: (1)top 命令执行显示的信息会占满全屏幕,默认情况下是 10s
跟新一次。 (2)在top命令运行情况下,可以使用命令进行操作。在top 命令工作区内,可以使用的命令如下所示。 pace立即更新 切换到命令名显示,或显示整个命令(包括参数)。 增加显示字段,或删除显示字段。 h,?显示有关安全模式及累积模式的帮助信息。 提示输入要杀死的进程ID,目的是用来杀死该进程(默人信号为15) 禁止空闲进程和僵尸进程。 切换到显法负载平均值和正常运行的时间等信息。 m切换到内存信息,并以内存占用大小排序 n提示显示的进程数,比如输入3,就在整屏上显示3个进程。 0,O改变显示字段的顺序。 r把 renice应用到一个进程,提示输入PD和 renice的值。 改变两次刷新时间间隔,以秒为单位 切换到显示进程和CPU状态的信息 A按进程生命大小进行排序,最新进程显示在最前。 M按内存占用大小排序,由大到小。 N以进程ID大小排序,由大到小 按CPU占用情况排序,由大到小。 切换到累积时间模式 按时间/累积时间对任务排序。 W把当前的配置写到~ torc中。 2.3查看指定程序的进程信息 pgrep是通过程序的名字来查询进程的工具,一般是用来判断程 序是否正在运行。在服务器的配置和管理中,这个工具常被应用,帮 助服务器管理员快速的确定某一服务的状态 9|am操作系统》讲稿/河南中医学院/阮晓龙/pemn
9 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 跟新一次。 (2)在 top 命令运行情况下,可以使用命令进行操作。在 top 命令工作区内,可以使用的命令如下所示。 space 立即更新; c 切换到命令名显示,或显示整个命令(包括参数)。 f,F 增加显示字段,或删除显示字段。 h,? 显示有关安全模式及累积模式的帮助信息。 k 提示输入要杀死的进程 ID,目的是用来杀死该进程(默人信号为 15) i 禁止空闲进程和僵尸进程。 l 切换到显法负载平均值和正常运行的时间等信息。 m 切换到内存信息,并以内存占用大小排序。 n 提示显示的进程数,比如输入 3,就在整屏上显示 3 个进程。 o,O 改变显示字段的顺序。 r 把 renice 应用到一个进程,提示输入 PID 和 renice 的值。 s 改变两次刷新时间间隔,以秒为单位。 t 切换到显示进程和 CPU 状态的信息。 A 按进程生命大小进行排序,最新进程显示在最前。 M 按内存占用大小排序,由大到小。 N 以进程 ID 大小排序,由大到小。 P 按 CPU 占用情况排序,由大到小。 S 切换到累积时间模式。 T 按时间/累积时间对任务排序。 W 把当前的配置写到~/.toprc 中。 2.3 查看指定程序的进程信息 pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程 序是否正在运行。在服务器的配置和管理中,这个工具常被应用,帮 助服务器管理员快速的确定某一服务的状态
命令 shell>pgrep[参数]程序名称 命令参数: -列出程序名和进程I。 进程起始的ID n进程终止的ID。 命令举例: shell>pgrep apache2 shell>pgrep -l apache2 shell>pgrep-o apache2 shell>pgrep-n apache2 shell>pgrep-lo mysql shell>pgrep-lon mysql shell>pgrep-In mysql 2.4查看指定文件的进程信息 lsof( list open files)是一个列出当前系统打开文件的工具 在 Linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可 以访问常规数据,还可以访问网络连接和硬件。 在终端下输入1sof即可显示系统打开的文件,因为lsof需要访 问核心内存和各种文件,所以lsof命令需要root权限进行执行时才 能够执行全部功能。1sof命令的显示结果中每行显示一个打开的文 件,若不指定条件默认将显示所有进程打开的所有文件。 例如,使用1sof查看系统打开的所有文件,结果如下。 managebyruanon3-3@HactemServer3-3: -S head -n 10 /home/managebyruanon3-3/lsof-20111030txt COMMAND PID TYPE DEVICE SIZE/OFF NODE NAME 8,11464244980778/sbin/nit 8,151728 /ib/x86 64-linux-gnu/libnss files-2 13so 8,14768062914594/ibk8664 -inux-gnu/ bnss nis213.0 62914589/lib/x86 64-linux-gnulibns1-2 13 so 62914590/ib/x86 64-Iinux-gnu/libnss compat-2 13so 8,1163812062914579/ibx8664 -linux-gnu root mem REG 8,1317526291459/ibk8664 -inux-gnu/brt-2.13.s lsof输出各列信息的意义如表5-2所示。 10《LInux操作系统》讲稿/河南中医学院/阮晓龙/rl@hactcm.edu.cn
10 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 命令: shell>pgrep [参数] 程序名称 命令参数: -l 列出程序名和进程 ID。 -o 进程起始的 ID。 -n 进程终止的 ID。 命令举例: shell>pgrep apache2 shell>pgrep -l apache2 shell>pgrep -o apache2 shell>pgrep -n apache2 shell>pgrep -lo mysql shell>pgrep -lon mysql shell>pgrep -ln mysql 2.4 查看指定文件的进程信息 lsof(list open files)是一个列出当前系统打开文件的工具。 在 Linux 环境下,任何事物都以文件的形式存在,通过文件不仅仅可 以访问常规数据,还可以访问网络连接和硬件。 在终端下输入 lsof 即可显示系统打开的文件,因为 lsof 需要访 问核心内存和各种文件,所以 lsof 命令需要 root 权限进行执行时才 能够执行全部功能。lsof 命令的显示结果中每行显示一个打开的文 件,若不指定条件默认将显示所有进程打开的所有文件。 例如,使用 lsof 查看系统打开的所有文件,结果如下。 managebyruanon3-3@HactcmServer3-3:~$ head -n 10 /home/managebyruanon3-3/lsof-20111030.txt COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 8,1 4096 2 / init 1 root rtd DIR 8,1 4096 2 / init 1 root txt REG 8,1 146424 4980778 /sbin/init init 1 root mem REG 8,1 51728 62914592 /lib/x86_64-linux-gnu/libnss_files-2.13.so init 1 root mem REG 8,1 47680 62914594 /lib/x86_64-linux-gnu/libnss_nis-2.13.so init 1 root mem REG 8,1 97248 62914589 /lib/x86_64-linux-gnu/libnsl-2.13.so init 1 root mem REG 8,1 35712 62914590 /lib/x86_64-linux-gnu/libnss_compat-2.13.so init 1 root mem REG 8,1 1638120 62914579 /lib/x86_64-linux-gnu/libc-2.13.so init 1 root mem REG 8,1 31752 62914599 /lib/x86_64-linux-gnu/librt-2.13.so lsof 输出各列信息的意义如表 5-2 所示