bash脚本功能中的并发或锁定访问

x13*_*x13 2 bash shell concurrency function

有谁知道如何在bash脚本中锁定函数?我想做一些类似Java的事情(例如同步),以确保保存在受监控文件夹中的每个文件都试图使用Submit功能。

我的脚本摘录:

(...)

ON_EVENT () { local date = $1 local time = $2 local file = $3 sleep 5 echo "$date $time New file created: $file" submit $file }

submit () { local file = $1 python avsubmit.py -f $file -v python dbmgr.py -a $file }

if [ ! -e "$FIFO" ]; then mkfifo "$FIFO" fi

inotifywait -m -e "$EVENTS" --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %f' "$DIR" > "$FIFO" & INOTIFY_PID=$!

trap "on_exit" 2 3 15

while read date time file do on_event $date $time $file & done < "$FIFO"

on_exit

Run Code Online (Sandbox Code Playgroud)

保存新文件时,我正在使用inotify监视文件夹。对于每个保存(接收)的文件,请提交到VirusTotal服务(avsubmit.py)和TreathExpert(dbmgr.py)。并发访问将是避免阻塞监视文件夹中创建的每个新文件的理想选择,但是锁定提交功能应该足够了。

感谢大伙们!

Tre*_*ies 5

这样的事情应该起作用:

if (set -o noclobber; echo "$$" > "$lockfile") 2> /dev/null; then
   trap 'rm -f "$lockfile"; exit $?' INT TERM EXIT
   # Your code here
   rm -f "$lockfile"
   trap - INT TERM EXIT
else
   echo "Failed to acquire $lockfile. Held by $(cat $lockfile)"
then
Run Code Online (Sandbox Code Playgroud)