首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

Shell脚本学习笔记(八)--进程管理和工作控制

作者:  时间: 2011-03-19

进程管理和工作控制

ps,top,htop命令的使用

传送信号

使用kill命令可以对进程传送信号进行管理。管理进程时的基本原则是

1 先礼后兵。先发送信号给进程,让进程自己完成该做的事,若进程已不听指挥,或失去控制,再发出强制性的信号。这样的好处是,让进程在结束前有缓冲的时间做好收尾工作,如清除存盘、锁定文件、进程编号记录文件等,否则当进程不正常结束时,若在主机中残留这些文件,而下次要再执行程序时,可能会出现无法启动的现象。
2 各得其所。调整进程的优先级,使得每个进程都得到适当的安排,各项工作能如期完成。进程进入执行排程(schedule)的优先级,成为nice值。通常nice值介于-20~20之间。nice值越少,优先级越高。只有root权限者才能调整介于-20~0的nice值;一般权限的使用者,只能调整其拥有的进程的nice值在0~20之间.换言之,只有root才能调高进程的优先级,一般使用者只能降低其进程的优先级。nice命令和renice命令。nice运用于尚未执行的程序,renice运用在已执行的进程。


nice -n nice值 程序   指定程序执行时的优先级为某一nice值。-20~19,但只有root可以用-20~0这个区段。若省略-n不指定nice值,则使用预设值10
renice nice值 -p PID -g 群组 -u 使用者名称   -p -g -u三个选项,可单独使用也可以组合使用

PRI也是进程优先级的一种表示法,和nice值(NI)不同的是,PRI永远以0或正数表示:PRI=NI+20

工作控制

bash的互动模式下,允许用户暂停某一进程,稍后再恢复执行该进程。这种赋予使用者操控进程的机制,成为工作控制(jobs control)
例子

#!/bin/bash

for ((;1;))
do
sleep
10
done


整理

常用的工作控制命令
& 将指令丢到背景执行
bg 将暂停的工作丢到背景 使用ctrl+z组合键暂停进程,然后配合bg命令把工作丢到背景,和执行"指令 &"的效果是一样的
fg 将暂停的工作拉回到前台执行
jobs 列出工作 或jobs -l
disown 移除工作
kill 传送信号给进程或工作
wait 等待子进程结束,传回最后一个命令的执行状态
suspend 暂停目前的shell。suspend 暂停一个非login的shell,suspend -f 暂停目前的login shell。当暂停的shell收到CONT信号时才会继续运行。

进程替换

 
进程替换可以让我们把标准输出,一次倒给许多进程作为输入;或者由多个进程取得其输出,然后倒给某个程序去处理。
进行替换的用法:
1 命令< (指令行)  通过设备文件/dev/fd/n或缓存文件,把进程的输出倒给<左方的命令来读取
2 > (指令行)  这是通过设备文件/dev/fd/n或缓存盘,把数据提供给()中的进程去读取