免费注册 查看新帖 |

Chinaunix

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

判断脚本是否在运行的出错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-04 19:15 |只看该作者 |倒序浏览
实现判断脚本是否已存在,如存在则退出,不存在则可以启动
suse linux环境下
oracle@sdp3b:> echo $SHELL
/bin/bash

vi mouses.h
#!/usr/bin/ksh
process_count=`ps -ef|grep mouse.sh|grep -v grep|wc -l`
if  [ $process_count -gt 1 ]
then
        echo "The mouse.sh is still running!"
        exit
else
        echo "The mouse.sh can be start!"
fi

chmod u+x ./mouse.sh

./mouse.sh

为什么判断不了,总是退出了,实际上没有mouse.sh脚本在运行

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2011-05-04 19:33 |只看该作者

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
3 [报告]
发表于 2011-05-04 19:34 |只看该作者
什么都没打印吗?

论坛徽章:
0
4 [报告]
发表于 2011-05-05 00:34 |只看该作者
看了 Waker 给的链接,还是没搞清。回到宿舍,用虚拟机测试了一把,结果却很不一样。
mouse@linux:~/temp> cat /etc/SuSE-release
SUSE Linux Enterprise Server 10 (i586)
VERSION = 10
mouse@linux:~/temp> echo $SHELL
/bin/bash

#!/usr/bin/ksh
process_count=`ps -ef|grep mouse.sh|grep -v grep|wc -l`
echo $process_count
if  [ $process_count -gt 1 ]
then
        echo "The mouse.sh is still running!"
        exit
else
        echo "The mouse.sh can be start!"
fi
mouse@linux:~/temp> ./mouse.sh
1
The mouse.sh can be start!

可以正常判断
这是怎么回事呢?

论坛徽章:
0
5 [报告]
发表于 2011-05-05 00:39 |只看该作者
改用bash
mouse@linux:~/temp> vi mouse.sh

#!/bin/bash
process_count=`ps -ef|grep mouse.sh|grep -v grep|wc -l`
echo $process_count
if  [ $process_count -gt 1 ]
then
        echo "The mouse.sh is still running!"
        exit
else
        echo "The mouse.sh can be start!"
fi

mouse@linux:~/temp> ./mouse.sh
2
The mouse.sh is still running!

论坛徽章:
0
6 [报告]
发表于 2011-05-05 01:26 |只看该作者
回复 4# gdutllf2006

http://bbs.chinaunix.net/thread-731435-5-1.html
   46L: 终于搞定了:

procname=processctl
a=$(ps -ef)

ifrunning=`echo "$a"|grep -w $procname|grep -v grep|wc -l`

echo $ifrunning
if [ $ifrunning -gt 1 ]; then  
  echo "Alert: You can not start the process twice!"
  sleep 10
  exit
else
  echo "Start Success!"
  sleep 5
fi

定义变量解决,2l的链接里面讲的也不错。
我有个问题:
上面这一条echo "$a"|grep proc...|grep -v grep|wc -l 跟 echo "$a"|grep proc...|wc -l  是不是等价呢? grep -v grep 这个是不是多余的呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP