CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  程序开发区

求一个启动程序的脚本!

楼主sunjun240(小帅猪)2006-03-17 13:25:09 在 Linux/Unix社区 / 程序开发区 提问

#!/bin/sh  
  if   ps   -ef|grep   'type'|grep   -v   grep;then    
  echo   "successful"  
  else  
  cd   /opt/sj  
  nohup   ./type   >/dev/null   &  
  fi  
  //*******************************************  
  #!/bin/sh  
  st=ccr0  
  sr=grep  
  isrun='ps   -ef|grep   ${st}|grep   -v   ${sr}'  
  if   [   -z   $isrun   ]  
  then  
  echo   "start   program!"  
  cd   /opt/sj  
  nohup   ./type   >/dev/null   &  
  else  
  echo   "no   strart!"    
  fi  
   
  上面两端脚本有问题吗?指教!thanks  
   
  问题点数:20、回复次数:7Top

1 楼fierygnu(va_list)回复于 2006-03-19 00:25:40 得分 20

碰到什么问题?Top

2 楼sunjun240(小帅猪)回复于 2006-03-21 16:05:29 得分 0

第一个是好的,但是第二个执行出错!  
  ./auto1.sh:   line   5:   [:   too   many   arguments  
  不知道错在那里?Top

3 楼fierygnu(va_list)回复于 2006-03-21 16:14:48 得分 0

两个问题:  
  1、isrun='ps   -ef|grep   ${st}|grep   -v   ${sr}'应该用反引号  
  isrun=`ps   -ef|grep   ${st}|grep   -v   ${sr}`  
  2、if   [   -z   $isrun   ]要用if   [   -z   "$isrun"   ]Top

4 楼sunjun240(小帅猪)回复于 2006-03-21 17:56:24 得分 0

成功了!非常感谢!  
  //********************  
          经过我的观察发现,malloc   1G以上的内存不是每次都能成功!问题的关键是crontab调用shell脚本也启动不了程序!但此时手工运行脚本是能启动程序的!这就奇怪了,开始是怀疑脚本有bug或是crontab根本没有执行(按理说不会,这段脚本我一直在用),后一一试验此段脚本都正常!一直找不到问题的原因!  
          在写这信前又碰到这样的问题:程序malloc失败退出了,但脚本每1min执行一次,脚本始终执行(echo   "successful"   >   /opt/sj/ccr1/nodo.out)这句!但我手工执行./auto.sh后,程序正常启动了!奇怪!!!昏  
     
          【附件1】crontab   :*/1   *   *   *   *   /opt/sj/ccr1/auto.sh  
          【附件2】[wise@localhost   ccr1]$   tail   auto.sh  
                            #!/bin/sh  
                            if   ps   -ef|grep   'ccr1'|grep   -v   grep;then    
                            echo   "successful"   >   /opt/sj/ccr1/nodo.out  
                            else  
                            cd   /opt/sj/ccr1  
                            nohup   ./ccr1   >/dev/null   &  
                            echo   "do"   >   /opt/sj/ccr1/do.out  
                            fi  
  后来我发现是当前路径的名字和要执行文件名冲突,但why?是什么原因了?why手工启动的脚本可以调动程序了?(./auto.sh)  
  Top

5 楼sunjun240(小帅猪)回复于 2006-03-21 18:04:42 得分 0

前两天发现这个问题!问题的出在哪是找到了(当前路径的名字和要执行文件名冲突),但why,就不知道了!  
  一旦我将源码编译成其他的名字(非ccr1),一却正常!  
  想知道是什么原因?谢谢!Top

6 楼fierygnu(va_list)回复于 2006-03-21 18:10:33 得分 0

cron执行的是/opt/sj/ccr1/auto.sh,手工执行是./auto.sh,ps   -ef给出的是全路径名,所以cron误判。Top

7 楼sunjun240(小帅猪)回复于 2006-03-21 18:46:33 得分 0

感叹中...  
  非常感谢!Top

相关问题

  • 如何用脚本让COM+应用程序重新启动(急)
  • 如何在启动ORACLE时自动执行一SQL脚本程序?
  • 如何用脚本语言做一个守护程序,让它在apache启动后就运行
  • PL/SQL脚本程序问题
  • 求EMAIL群发程序,脚本。
  • crontab无法启动shell脚本,求助!
  • 重启动程序
  • 如何在VC程序中支持脚本程序
  • 程序启动小问题
  • 程序自启动问题!!!

关键词

  • 脚本
  • 执行
  • ps
  • null
  • ccr
  • grep
  • sj
  • isrun
  • 程序
  • 启动

得分解答快速导航

  • 帖主:sunjun240
  • fierygnu

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo