複数のrsyncプロセスを並行して開始するbashスクリプトがあります。同時子プロセスの数を制限したいのですが、スクリプト全体をシリアル化したくありません。
現在のスクリプトの簡略版は次のとおりです。
#!/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
と--max-procs
解決策かもしれません しかし、それをスクリプトと統合する方法がわかりません。このように行うことはできますか、それとももっと良い方法がありますか?
ssh "$1" "find /var/images -type f -print0" |
xargs --null --replace --max-procs=X rsync "${1}:{}" /my/destination
トリックを行う必要があります。