如果我有一个deployment.sh,它有两个参数:环境和发布版本。
deployment.sh uat release1
deployment.sh prod release1
Run Code Online (Sandbox Code Playgroud)
我想随时做:deployment.sh相同环境和发布版本的可以单例运行。但是 deployment.sh uat release1和deployment.sh prod release1可以同时运行。
这该怎么做。谢谢
这样做的一种方法是文件锁定,它明确地仅从多个进程中选择一个。见man flock:
#! /bin/bash
category="$1"
if [ 'uat' != "$category" ] && [ 'prod' != "$category" ]; then
exit 2
fi
(
flock -n 9 || exit 1
# ... commands executed under lock ...
) 9>/var/lock/"$category"
Run Code Online (Sandbox Code Playgroud)