当前位置: 技术问答>linux和unix
如何避免当前脚本是否被重复执行?
来源: 互联网 发布时间:2017-05-03
本文导语: hi,各位大侠, 我这里有个简单的需求: 希望当前脚本只有一个实例在运行。 当前脚本大致如下: shell_name=$0 echo "shell_name:"$shell_name num_p=`ps aux | grep $shell_name | grep -v grep | wc -l` #这里的数量竟然是2! echo...
hi,各位大侠,
我这里有个简单的需求:
希望当前脚本只有一个实例在运行。
当前脚本大致如下:
请问,为什么上面的$num_p为2,而不是1呢?
打印ps aux | grep $shell_name | grep -v grep,显示只有一行啊
我这里有个简单的需求:
希望当前脚本只有一个实例在运行。
当前脚本大致如下:
shell_name=$0
echo "shell_name:"$shell_name
num_p=`ps aux | grep $shell_name | grep -v grep | wc -l` #这里的数量竟然是2!
echo "num_p:"$num_p
if [ $num_p -gt 1 ]
then
echo "multi processes"
else
echo "uniq process"
fi
请问,为什么上面的$num_p为2,而不是1呢?
打印ps aux | grep $shell_name | grep -v grep,显示只有一行啊
|
参考:
http://bbs.chinaunix.net/thread-3612103-1-1.html
http://bbs.chinaunix.net/thread-1800848-1-1.html
http://bbs.chinaunix.net/thread-3612103-1-1.html
http://bbs.chinaunix.net/thread-1800848-1-1.html
|
进程数为2,应该是`command`是作为当前Shell的子Shell执行的。
至于保证脚本不被重复执行,可以考虑用文件锁,许多后台进程就是这样写的。
/var/run下面,或者/tmp下面。
至于保证脚本不被重复执行,可以考虑用文件锁,许多后台进程就是这样写的。
/var/run下面,或者/tmp下面。
|
在脚本中加一个标志位,老保证脚本只执行一次就好!