ste*_*fan 8 scripting shell-script parallelism
我有一个小脚本,它循环遍历文件夹的所有文件并执行(通常是持久的)命令。基本上是
for file in ./folder/*;
do
./bin/myProgram $file > ./done/$file
done
Run Code Online (Sandbox Code Playgroud)
(请忽略语法错误,这只是伪代码)。
我现在想同时运行这个脚本两次。显然,如果 ./done/$file 存在,则不需要执行。所以我把脚本改成了
for file in ./folder/*;
do
[ -f ./done/$file ] || ./bin/myProgram $file >./done/$file
done
Run Code Online (Sandbox Code Playgroud)
所以基本上问题是:两个脚本(或通常不止一个脚本)是否可能实际上处于同一点并检查done
失败且命令运行两次的文件是否存在?
这将是完美的,但我非常怀疑。这太容易了 :D 如果他们处理同一个文件可能发生,是否有可能以某种方式“同步”脚本?
这是可能的,并且在现实中确实发生了。使用锁定文件可以避免这种情况。一个例子,来自上述页面:
if mkdir /var/lock/mylock; then
echo "Locking succeeded" >&2
else
echo "Lock failed - exit" >&2
exit 1
fi
# ... program code ...
rmdir /var/lock/mylock
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9156 次 |
最近记录: |