试验四进程管理
实验四实验四 实验名称:实验名称:进程管理 实验目的:实验目的: 熟悉shell的基本操作; 掌握查看系统中的进程; 掌握判断服务器健康状态; 掌握杀死进程; 掌握如何启动前、后台进程。 实验类型:实验类型:验证 实验学时:实验学时:2学时 实验仪器设备:实验仪器设备:PC 机、Linux 操作系统软件。 实验内容及步骤:实验内容及步骤: 一、查看系统中所有进程一、查看系统中所有进程 1.ps 是 Linux 中最基础的浏览系统中的进程的命令。 能列出系统中运行的进程, 包括进程号、 命令、CPU 使用量、内存使用量等。下述选项可以得到更多有用的消息。 如果一个进程永远都是以后台方式启动,并且不能受到Shell 退出影响而退出,一个正 统的做法是将其创建为守护进程(daemon) 。守护进程值得是系统长期运行的后台进程,类 似 Windows 服务。守护进程信息通过 ps –a 无法查看到,需要用到–x 参数,当使用这条命 令的时候,往往还附上-j 参数以查看作业控制信息,其中TPGID 一栏为-1 就是守护进程。 语法:ps [选项] 选项: -a:显示所有用户的进程清单。 -f:产生某个进程的一个完整信息清单。 -u:显示进程拥有者、进程启动时间等更详细的信息。 -x:显示不是由终端提供的进程信息。 -e: 显示所有进程,包括没有控制终端的进程 -r:只显示正在运行的进程。 -m:显示线程信息。 -w:宽行显示进程信息。 -l:用长格式显示进程信息。 -t:只显示由终端/dev/tty 提交的进程。 最常用的两个: $ps aux#UNIX 格式,选项前不用加“-”,a 所有前台进程,x 所有后台进程,u 显示由 哪个用户产生的进程 $ps –le#Linux 标准格式,l 更加详细,e 所有进程 $ps –Al 运行该命令后,得到当前系统的进程信息,根据这些信息。 F:表示进程的标志; UID:表示进程拥有者的 ID 号; PPID:表示进程的父进程ID 号,其中初始化程序 init 父进程 ID 号为 0; PRI:时间片的长度; NI:进程的优先级; WCHAN:进程中处于睡眠状态的内核函数名称。 ps 命令虽然简单,但是输出结果复杂,每一行代表一个进程。 2. pstree linux 中,每一个进程都是由其父进程创建的。此命令以可视化方式显示进程,通过显 示进程的树状图来展示进程间关系。如果指定了 pid 了,那么树的根是该 pid,不然将会是 init(pid: 1)。 语法:pstree [选项] 选项: -p:显示进程 PID -u:显示进程的所属用户 二、判断服务器健康状态二、判断服务器健康状态 1.top 性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似 windows 的任务 管理器。 语法:top [选项] 选项: -d 秒数:指定 top 命令每隔几秒更新。默认3 秒。 ?或 h:显示交互模式的帮助。 P:以 CPU 使用率排序,默认此项。 M:以内存使用排序。 N:以 PID 排序。 q:退出 top。 主要从输出结果的前 5 行判断: 2. nice 语法:nice [优先值] [进程名] # 通过给定的优先值启动一个程序 内核根据进程的nice值决定进程需要多少处理器时间, 进程优先级值的范围从-20到19。 值越低,优先级越高。降低优先级可以直接用“nice -niceNum 命令“这种格式;提升优先级 用“nice --niceNum 命令“的格式,如果为负数则需要root 权限。 通过 nice 命令的帮助,用户可以设置和改变进程的优先级。提高一个进程的优先级, 内核会分配更多 CPU 时间片给这个进程。默认情况下,进程以0 的优先级启动。进程优先 级可以通过 top 命令显示的 NI(nice value)列查看。 上述命令例子中,可以看到 top 命令获得了-3 的优先值。 3. renice renice 命令类似 nice 命令。使用这个命令可以改变正在运行的进程优先值。注意,用户 只能改变属于他们自己的进程的优先值。 renice -n -p# 改变指定进程的优先值 初始优先值为 0 的 3806 号进程优先值已经变成了4. renice -u -g# 通过指定用户和组来改变进程优先值 上述例子中,用户为 mint 的所有进程优先值变为-3。 三、终止进程三、终止进程 1. kill 在 windows 下面,我们要结束一个进程,最简单的方式就是关闭这个程序,相应的进 程也会随之结束,遇到不能关闭的情况, 会打开任务管理器结束掉。那么在Linux 下如何做 呢?我们可以使用 kill 命令来终止进程, 向 Linux 系统的内核发送一个系统操作信号和某个 程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。 为什么要杀死进程? * 该进程占用了过多的 CPU 时间 * 该进程锁住了一个终端,使其他前台进程无法运行 * 运行时间过长,但没有预期效果 * 产生了过多到屏幕或磁盘文件的输出 * 无法正常退出 如果你使用 kill,你需要知道进程 ID 号。killall 和 pkill 是类似的命令,但使用模式匹配, 如进程名,进程拥有者等。 #kill – l#查看可用的进程信号 例如: #kill -1 22154 #kill -9 22368 2.killall [选项] [信号] 进程名按照进程名杀死进程 选项: -i:交互式 -I:忽略大小写 3.pkill [选项] [信号] 进程名与 killall 相似但可以按终端号杀死进程 选项: -t:终端号 例如:#pkill -9 –t tty1 4. w w 提供当前登录的用户及其正在执行的进程的信息。显示信息头包含信息,如当前时 间、系统运行时长、登录用户总数、过去的1,5,15 分钟内的负载均衡数。基于这些用户 信息,用户在终止不属于他们的进程时要小心。 查看个别用户信息:w [用户名] 四、工作管理四、工作管理 1.把进程放入后台(类似Windows 最小化) 通过“&”在后台启动一个程序 例:find -name *iso /tmp/res.txt & top 命令执行过程中 ctrl+z 2. jobs 查看后台的工作 我们可以将一个程序放到后台执行,这样它就不占用当前终端,我们可以做其他事情。 而 jobs 命令用来查看后台进程的状态信息。 将进程放到后台执行,使其不占用终端。可以通过 fg 命令来放到前台执行。相关的命 令 fg、bg、kill 等。 语法:jobs [选项] 选项: -l 显示后台进程的信息,显示格式 [Job ID] [+-] PID (当前任务用+表示,其他 非当前为-) -p 只显示 PID -r 只显示运行中的进程,任务的状态可为running、Terminated、stopped、done 等 输出结果中: “+”代表最近一个放入后台的工作,也是工作恢复时默认恢复的工作。 “-”代表倒数第二个放入后台的工作。 3.fg 将后台的命令调至前台继续运行 格式:fg %jobId,这里不是进程的