Bash
有沒有一種簡單的方法來限制並行執行的子程序的數量?
我有一個 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
我相信
xargs
with--max-procs
可能是一個解決方案,但我不知道如何將它與我的腳本集成。可以這樣完成,還是有更好的方法?
ssh "$1" "find /var/images -type f -print0" | xargs --null --replace --max-procs=X rsync "${1}:{}" /my/destination
應該做的伎倆。