【发布时间】:2012-10-21 20:38:40
【问题描述】:
可能重复:
Quick-and-dirty way to ensure only one instance of a shell script is running at a time
我是 shell 脚本的新手。
我想要做的是避免运行多个脚本实例。
我有这个 shell 脚本 cntps.sh
#!/bin/bash
cnt=`ps -e|grep "cntps"|grep -v "grep"`
echo $cnt >> ~/cntps.log
if [ $cnt < 1 ];
then
#do something.
else
exit 0
fi
如果我以这种方式运行它$./cntps.sh,它会回显 2
如果我以这种方式运行$. ./cntps.sh,它会回显 0
如果我使用crontab 运行它,它会回显 3
有人可以向我解释为什么会这样吗? 避免运行多个脚本实例的正确方法是什么?
【问题讨论】:
-
您是否尝试将
ps -e|grep "cntps"|grep -v grep添加到您的脚本中以查看您正在计算哪些进程? -
是的。我试过了。只是我自己的脚本的过程。
-
相关wiki.bash-hackers.org/howto/mutex(短版:使用系统上可用的锁定实用程序)