- OS: CenOS 7.9
- Bash ver: GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
I am doing S3 objects migration via shell script (curl to local MinIO endpoint).
This script spawns multiple workers (via background process &), uses FIFO as job queue, and flock to control read job from queue, then downloads objects, uploads objects ... etc.
Part of the script looks like this:
# ... # read params, show info ... # setting up locks, fifo ... # define the job() function run by worker. # # ... # the FIFO (job queue) is FD 3 # the FIFO lock is FD 4 function work () { wid=$1 # setup FD and locks # ... while true; do flock 4 # get the fifo lock read -r -su 3 job_id obj read_status=$? flock -u 4 # release the fifo lock if [[ $read_status -eq 0 ]]; then # if read job from queue, run job in a subprocess. fi done # clean up FDs } echo "Spawning workers..." for ((i=1;i&3 } while read -r obj_name ; do append_job $i "${obj_name}" i=$((i+1)) done <
Источник: https://stackoverflow.com/questions/781 ... -fifo-size
Мобильная версия