快速业务通道

linux运维初级班课前综合****及参考****20110529

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-03


linux运维初级班课前综合****及参考****20110529

#########################################################
#《老男孩linux就业培训中心-初级班第七期课前****及课上讲解
#shell脚本编程实战模拟****
#date:2011-5-29
#出题人:老男孩
#QQ:31333741 MAIL:oldboy521@hotmail.com
#blog: http://oldboy.blog.51cto.com
#psite: http://oldboy.cc(即将开放)
##########################################################


问题1、实现每分钟检查一次apache进程,如果进程不存在打印数字1,存在打印数字0.
提示:
1、apache进程数获取命令 ps -ef|grep http|wc -l.
2、判断条件如果http进程数量大于0,即认为进程存在.
要求:
1.请使用if语句加定时任务实现.
2.请使用while语句实现

解答:
[root@oldboy-B scripts]# cat judgethttp.sh
#!/bin/sh
httppronum=`ps -ef|grep http|grep -v http|wc -l`
#if [ `ps -ef|grep http|wc -l` -gt 0 ] #====这样写也是可以的.
if [ $httppronum -gt 0 ]
then
echo 0
else
echo 1
fi
提示:以上脚本执行结果是不对的?不知道你们发现没有?执行结果httppronum=`ps -ef|grep http|grep -v http|wc -l`
不符合要求,而直接命令行ps -ef|grep http|grep -v http|wc -l执行又是对的?到底是什么原因呢?请见下文?

====此处学生提问====
为什么老师的脚本开头写的是#!/bin/sh而不是#!/bin/bash
解答:在Centos和RedHat Linux系统 /bin/sh为/bin/bash软链接,就是说是同一个.
[root@oldboy-B scripts]# ll /bin/sh
lrwxrwxrwx 1 root root 4 04-23 16:29 /bin/sh -> bash
[root@oldboy-B scripts]# ll /bin/bash
-rwxr-xr-x 1 root root 735004 2009-01-22 /bin/bash

Empire CMS,phome.net


提示:
Bash 是 GNU/Linux 默认的 Shell 和 Bourne shell (sh) 兼容,采取了Korn shell (ksh) 和
C shell (csh) 的特色.符合 IEEE POSIX P1003.2/ISO 9945.2 Shell and Tools 标准.Centos和
RedHat Linux下默认的Shell均为bash.因此,在写shell脚本的时候,我们的脚本的开头也可以不加
#!/bin/bash.但如果当前的shell非你默认的shell时,比如tcsh,那么就要写#!了.
建议大家最好都加上开头语言标识.

使用while守护进程方式实现(不用定时任务)
[root@oldboy-A scripts]# /application/apache/bin/apachectl start #===>启动apache
[root@oldboy-A scripts]# ps -ef|grep http|grep -v grep #===>查看apache进程
root 3675 1 1 19:06 ? 00:00:00 /application/apache2.2.17/bin/httpd -k start
apache 3684 3675 0 19:06 ? 00:00:00 /application/apache2.2.17/bin/httpd -k start
apache 3686 3675 0 19:06 ? 00:00:00 /application/apache2.2.17/bin/httpd -k start
apache 3688 3675 0 19:06 ? 00:00:00 /application/apache2.2.17/bin/httpd -k start
apache 3690 3675 0 19:06 ? 00:00:00 /application/apache2.2.17/bin/httpd -k start
[root@oldboy-A scripts]# cat judgeweb-while.sh #===>查看进程的脚本
#!/bin/sh
httpnum=`ps -ef|grep http|grep -v grep|wc -l`
while true
do
#if [ `ps -ef|grep http|wc -l` -gt 0 ] #====这样写也是可以的.
if [ $httpnum -gt 0 ]
then
echo 0
else
echo 1
fi
sleep 60
done
[root@oldboy-A scripts]# sh judgeweb-while.sh #===>执行看结果,返回0表示存在http进程
0
0
0

[root@oldboy-A scripts]# p

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号