Bash

有沒有一種簡單的方法來限制並行執行的子程序的數量?

  • September 23, 2017

我有一個 bash 腳本,它可以並行啟動多個 rsync 程序。我想限制同時子程序的數量,但不序列化整個腳本。

這是目前腳本的簡化版本:

#!/bin/bash
(
 flock -n 200 || exit 0
 {
   for f in $(ssh $1 ls /var/images/)
   do
     rsync … &
   done
   wait
 } &> /var/log/my.log
) 200>/var/lock/my.lockfile

我相信xargswith--max-procs 可能是一個解決方案,但我不知道如何將它與我的腳本集成。可以這樣完成,還是有更好的方法?

ssh "$1" "find /var/images -type f -print0" |
 xargs --null --replace --max-procs=X rsync "${1}:{}" /my/destination

應該做的伎倆。

引用自:https://unix.stackexchange.com/questions/92943