怎样判断一个shell程序已经在运行?

怎样判断一个shell程序已经在运行?

有时候部署的shell脚本,在一个环境中,只能运行一个,为了防止其它人误启动,必须加以判断,如果已经在运行,就退出去,不执行.不知道大家有没有什么好的思路,靠shell脚本名字的方式,一般我都不考虑了,不好用.
>
>
>

      
简单的可以用 ps -ef | grep xxx | grep -v grep 来判断

地道点的
应该在程序运行时生成一个pid文件
记录这个程序的pid号
每次程序开始运行时都检查这个文件及文件里记录的pid是否在运行      
我是觉得用pid的方式好一些,不过不知道有没有其它的办法了:
复制内容到剪贴板
代码:
PIDLock=/tmp/.program.lock

if [ -r $PIDLock ];then

  cat $PIDLock | read pid

  kill -0 $pid > /dev/null 2>&1

  if [ $? -eq 0 ]; then

   echo "The same program  is running now."

   exit 1

  fi

fi

echo $$ > $PIDLock
      
可以用pidof 和 pgrep 命令。