0)||(substr($1,length($1)-1)>0))' | wc -l`  echo $PN  得出的结果=3  PG=`basename $0`  PN=`ps -ef | grep....">

当前位置:  技术问答>linux和unix

如何保证 shell 程序只有单一instance运行?

    来源: 互联网  发布时间:2015-09-03

    本文导语:  在linux下执行  PG=`basename $0`  PN=`ps -ef -o etime -o args | grep "$PG" | awk '((substr($1,1,1)>0)||(substr($1,length($1)-1)>0))' | wc -l`  echo $PN  得出的结果=3  PG=`basename $0`  PN=`ps -ef | grep "$PG"| grep -v "grep" | awk 'BEGIN {a=0...

在linux下执行 
PG=`basename $0` 
PN=`ps -ef -o etime -o args | grep "$PG" | awk '((substr($1,1,1)>0)||(substr($1,length($1)-1)>0))' | wc -l` 
echo $PN 
得出的结果=3 

PG=`basename $0` 
PN=`ps -ef | grep "$PG"| grep -v "grep" | awk 'BEGIN {a=0;} {a++;} END{print(a)}'` 
echo $PN 
得出结果=2 

好像应该执行出来等于1才对。怎么回事? 
给我感觉似乎``里面在grep $PG的时候把$PG的内容又运行出来一个,反而这段脚本本身就导致脚本重复执行了。。。



|
up!
不如把后面的awk暂时去掉,看看出来的究竟是哪些行。

|
使用一个临时文件作为临界量处理应该好一点。
程序应该是因为你的shell命令启动了子shell造成的。
或者你可以使用$$变量记录你当前运行shell的pid号,以后运行时检查一下这个pid号还存在不存在就可以了

|
加一个grep -v "grep" 是应该减去一等于2才对。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • unix编程,两条语句,有方法可以保证是原子操作吗
  • 进程中原语的原子性得不到保证会怎样?
  • UDP协议能保证包到达顺序的正确性吗??????
  • HP-UX 下消息队列能否保证消息包的先进先出?
  • 如何保证程序在后台执行???
  • 如何将mysql的数据文件移到指定目录,而且要保证mysql要运行正常.
  • cshell中怎样保证变量的值的长度为定长呢?
  • 如何保证一个网卡采集到的数据包从另一个网卡转发出去使得采集网卡不丢包
  • linux 文件系统怎样保证文件系统一致性
  • 保证送分,请进来看
  • 让JSP页面过期, 保证每次JSP页面都是最新的.
  • SCJP怎样?大家来谈谈(保证给分!)
  • 安装Oracle 问题。保证加分
  • 那位知道Kylix那里有下载? 一旦下载成功保证全分相送!!!
  • 数据库问题,问题简单,保证送分
  • 如何保证在计算机异常被启动时,文件不丢失(LINUX)
  • 求助,如解决,保证送分!
  • 如何保证 .properties 文件修改后的参数顺序与原来一样
  • ejb能够保证来自不同数据库的事务的完整性吗?
  • 怎么保证一个Frame总在最前


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3