我需要一些帮助。我有一个脚本'脚本1',它将调用'脚本2'在后台运行,定期检查一些东西。但我希望脚本2只启动一次,甚至脚本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
除此之外还有更多级别的保护,但它们变得复杂,我通常认为这对于大多数事情都是足够的。