仅从脚本运行一次命令,甚至脚本多次执行

时间:2012-09-25 05:50:52

标签: linux shell

我需要一些帮助。我有一个脚本'脚本1',它将调用'脚本2'在后台运行,定期检查一些东西。但我希望脚本2只启动一次,甚至脚本1被多次调用。有办法吗?

如果有人提出一些命令来实现这一点,那将会更有帮助。

提前致谢

1 个答案:

答案 0 :(得分:1)

当然,你可以把这样的东西放在Script2

的顶部
if [[ -f /tmp/Script2HasRun ]] ; then
    exit
fi
touch /tmp/Script2HasRun

这将通过使用sentinel文件从永远再次停止Script2,除非文件被删除当然,它可能会在某个时刻,因为它在{{1 }}

所以你可能想把它放在可以更好地保护的其他地方。

如果你 想要阻止它再次运行,你需要一些机制来删除sentinel文件。

例如,如果您的意图是一次只运行一个副本:

/tmp

请记住,那里有一个竞争条件,可以导致两个副本运行。有一些方法可以通过使用内容和存在来缓解这种情况,例如:

if [[ -f /tmp/Script2IsRunning ]] ; then
    exit
fi
touch /tmp/Script2IsRunning
# Do whatever you have to do.
rm -f /tmp/Script2IsRunning

除此之外还有更多级别的保护,但它们变得复杂,我通常认为这对于大多数事情都是足够的。