免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1574 | 回复: 3
打印 上一主题 下一主题

用shell写的守护进程问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-14 11:45 |只看该作者 |倒序浏览
我用shell写的守护进程:
while true
do
if ps -ef|grep crbt-exgw|grep -v grep 1>/dev/null 2>&1
then
    echo "crbt-exgw is running!"
else
    crbt-exgw -v 4 -F crbt-exgw.log &
    #tail crbt-exgw.log > crbt-exgw.msg
    echo "crbt-exgw is not run"
fi
sleep 1
done
可以正确执行!
我把上面的程序稍微经过改造后,写成如下程序daemonp:

if [ $# -ne 1 ]
then
echo "Please Enter the process name!"
exit 1
fi
process=$1
echo $process

while [ 1 ]
do
if ps -ef|grep $process|grep -v grep 1>/dev/null 2>&1
then
    echo "$process is running!"
else
    $process -v 4 -F /tmp/${process}.log &
    echo "$process is not run"
fi
sleep 1
done
然后我用$sh daemonp crbt-exgw命令来启动守护进程,为什么即使进程crbt-exgw不在,程序还是提示正在执行,谁能告诉我为什么?

论坛徽章:
0
2 [报告]
发表于 2006-12-14 11:59 |只看该作者

回复 1楼 qingfeng0826 的帖子

$sh daemonp crbt-exgw

可能grep包含了这个进程本身

论坛徽章:
0
3 [报告]
发表于 2006-12-14 12:14 |只看该作者
在文件头加上
  1. #!/bin/sh
复制代码

  1. daemonp crbt-exgw
复制代码
这样调用

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2006-12-14 15:38 |只看该作者
原帖由 qingfeng0826 于 2006-12-14 11:45 发表
...
然后我用$sh daemonp crbt-exgw命令来启动守护进程,为什么即使进程crbt-exgw不在,程序还是提示正在执行,谁能告诉我为什么?

这个么?嘿嘿,自己练习是不错的,是要实际应用的话,还需要再完善。个中原因是:这里面水还是挺深的,一两句话讲不明白。感兴趣的话搜搜坛子里关于“进程/子进程/子shell”、“进程计数”和“限制进程数量”方面的帖子。
OK,还是给你个简单的回答,头痛医头吧。^_^
ps -ef 会列出每个进程的命令行,这当然包括命令的所有参数,回头看看你的命令行的参数是否已经有了grep要找的关键字?明白了吗?古怪就出在这里了。^_^
可以简单改下实现你的目的,其它复杂的东西,这里就不涉及了:
ps -eo cmd|grep "^$process" |grep -v grep >& /dev/null

又及(缩写也是PS^_^):ps命令的语法也有很多,这里的例子在linux下是能用的,其它平台没有测试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP