210 likes | 356 Views
红帽企业 Linux 用户基础 RHA030. 11 单元. 观察和管理进程. 目标. 本单元你将学习到 : 解释进程是什么 描述怎样管理进程 使用 job 控制工具 调度递归任务 在 shell 脚本中 , 使用条件判断进行构建. 进程. 进程是加载到内存中的指令集 进程 ID 号 (PID) 唯一标识进程 UID,GID 和 SElinux 上下文决定文件系统的存取权限 通常继承自执行用户的权限. 进程列表. 用 ps 查看进程信息 默认显示当前终端进程 a 包括所有终端的进程 x 包括不属于终端的进程 u 打印进程所有者信息
E N D
11单元 观察和管理进程
目标 • 本单元你将学习到: • 解释进程是什么 • 描述怎样管理进程 • 使用job控制工具 • 调度递归任务 • 在shell脚本中,使用条件判断进行构建
进程 进程是加载到内存中的指令集 进程ID号(PID)唯一标识进程 UID,GID和SElinux上下文决定文件系统的存取权限 通常继承自执行用户的权限
进程列表 用ps查看进程信息 默认显示当前终端进程 a 包括所有终端的进程 x 包括不属于终端的进程 u 打印进程所有者信息 f 打印进程亲缘信息 o property1,property2…打印定制信息 pid,comm,%cpu,%mem,state,tty,euser,ruser等 示例 ps auo pid,%cpu,comm
查找进程 灵活性:ps options|其它命令 axo comm,tty|grep ttyS0 通过预定义模式:pgrep $ pgrep –U root $ pgrep –G student 通过准确的程序名:pidof $ pidof bash
信号 最基本的进程间通讯机制 直接发送给进程,不需要用户界面 对于任何信号应用程序都需要相应处理 通过名字或者号码来确定一个信号: Signal 15:TERM(默认) – 终止干净 Signal 9,KILL - 立即终止 Signal 1, HUP – 重读配置文件 man 7 signal 显示完整列表
给进程发送信号 通过pid:kill [signal] pid… 通过名称:killall [signal] comm… 通过模式:pkill [-signal] pattern
调度优先级 调度优先级决定对cpu的访问 进程的nice值影响优先级 值范围为-20到19,缺省为0 低nice值意味着高cpu优先级 通过ps –o comm,nice查看
更改调度优先级 Nice值可以被修改 当启动进程的时候: $ nice –n 5 command 在启动进程之后: $ renice 5 PID 只有root用户才能降低nice值
交互式进程管理工具 CLI:top GUI:gnome-system-monitor 性能: 显示实时进程信息 允许排序,终止和调优先级
作业控制 在后台运行一个进程 给命令行尾附加一个符号:firefox & 临时停止一个正运行的程序 使用ctrl-z或者发送signal 19(停止) 管理后台或者挂起的作业 显示作业号和名字:jobs 在后台恢复:bg [%jobnum] 在前台恢复:fg [%jobnum] 发送一个信号:kill [-SIGNAL] [%jobnum]
调度进程以后执行 非重定向输出,电子邮件给用户 root用户能修改其它用户的作业 • 使用at命令使作业运行一次,使用crontab循环调度作业
Crontab文件格式 crontab条目包括5个空格分隔组成的字段,后面紧跟着命令行 每行一条目,不限制行的长度 字段包括分钟,小时,月日,月,周日 #表示行注释 详情参见man 5 crontab
分组命令 两种方法来分组命令 合成:date;who|wc –l 背靠背运行命令 Subshell:(date;who|wc –l)>>/tmp/trace 所有输出都送给一个单一的stdout和stderr
exit状态 进程通过exit状态表示成功或失败 0表示成功,1-255表示失败 $?存储最近执行的命令的exit状态 exit[num] 终止并且设置进程状态为num 示例 $ ping –c1 –W1 station999 &>/dev/null $ echo $? 2
条件执行操作 基于各种exit状态,命令可按条件执行 &&表示条件然后 ||表示条件否则 示例: $ grep –q no_such_user /etc/passwd || echo ‘No such user’ No such user $ ping –c1 –W2 station1 &>/dev/null \ > && echo “station1 is up” \ >|| (echo ‘station1 is unreachable’;exit 1) station1 is up
test命令 在条件执行时评定一个布尔语法 为真时返回0 为假时返回1 长形式示例: $ test "$A" = "$B" && echo "Strings are equal" $ test "$A" -eq "$B" && echo "Integers are equal" 速记符号示例: $ [ "$A" = "$B" ] && echo "Strings are equal" $ [ "$A" -eq "$B" ] && echo "Integers are equal"
文件测试 文件测试: -f 测试查看一个文件是否存在以及是否是一个常规文件 -d 测试查看一个文件是否存在以及是否是一个目录 -x测试查看一个文件是否存在以及是否可执行 [ -f ~/lib/functions ] && source ~/lib/functions
脚本:if 语句 基于命令的exit状态来执行指令 if ping -c1 –w2 station1 &>/dev/null;then echo’Station1 is UP’ elif grep “station1” ~/maintenance.txt &>/dev/null; then echo “Station1 is undergoing maintenance’ else echo ‘Station1 is unexpectedly DOWN’ exit 1 if
结束 问题和答案 摘要 进程是在内存中的指令集 进程通过ps,kill,top,gnome-system-monitor命令来管理 挂起作业用Ctrl-z,管理作业用fg,bg命令 crontab exit状态 test If 语法