【发布时间】:2018-08-02 03:46:27
【问题描述】:
我在 $tmpdir/$i.dirlist 中有多个文件,其中包含条目命令 rsync。 每个文件有(取决于数量)10 有时 50 甚至 150 个 rsync 条目。
我现在想知道如何通过带有 IF 序列的 FOR 或 WHILE 循环来管理它,以便从每个文件($tmpdir/$i.dirlist - 如果我们有 100 个文件)只有 2 个条目并等待完成一些进程如果 rsync 的所有运行进程总数少于 200 个进程 - 启动新条目,保持参数中定义的固定进程数。在这种情况下 200
有什么想法吗?怎么办?
编辑: 关于 rsync 条目。 在每个文件中 $tmpdir/*.dirlist 是(在本例中为 200)目录条目
路径如下:
==> /tmp/rsync.23611/0.dirlist <==
system/root/etc/ssl
system/root/etc/dbus-1
system/root/etc/lirc
system/root/etc/sysctl.d
==> /tmp/rsync.23611/1.dirlist <==
system/root/etc/binfmt.d
system/root/etc/cit
system/root/etc/gdb
==> /tmp/rsync.23611/2.dirlist <==
system/root/usr/local
system/root/usr/bin
system/root/usr/lib
现在运行它我只是为了
for i in $(seq 1 $rsyncs); do
while read r; do
rsync $rsyncopts backup@$host:$remotepath/$ri $r 2>&1 |
tee $tmpdir/$i.dirlist.log ;
done < $tmpdir/$i.dirlist &
done
【问题讨论】:
-
如果我理解正确,您有一个要从文件 $tmpdir/*.dirlist 执行的命令列表,并且您希望为每个 .dirlist 同时执行 2 个命令文件。我假设每次流程完成时,您都想开始另一个流程。
-
你试过什么?您能否提供任何示例(甚至缩短,因为 150 个条目太多了)?
-
你能解释一下你所说的 rsync 条目是什么意思吗?它是调用 rsync 的 bash 命令行吗?
-
是的,先生们,我想做的正是它所描述的@PierreFrançois
-
关于rsync入口。我编辑了帖子/问题,因为消息太长,无法发表评论:)
标签: bash shell for-loop while-loop