如何知道 tar 命令何时完成?

Mar*_*dik 1 linux bash

我编写了这个脚本来从集群计算机的节点获取数据:

...
for machine in ${machines}
do
    echo "compressing data from: " ${machine}
    oarsh ${machine} "tar -zcf data_${machine}.tar.gz /tmp/data" &
done 
Run Code Online (Sandbox Code Playgroud)

我运行了脚本,当我回来时我得到了这个:

compressing data from:  machine1
...
compressing data from:  machineN
me@chinqchint-30:~$ tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
...
Run Code Online (Sandbox Code Playgroud)

而且我没有收到提示。

我使用第二个终端登录,可以看到所有.tar.gz文件都已创建,但我很担心,因为我没有拿回命令行的控制权。我可以简单地终止脚本吗?

phi*_*hem 5

您可以在命令之间添加双 && 以强制第二个命令等待第一个命令。

例如,

tar -zcf data_${machine}.tar.gz /tmp/data && echo "DONE"
Run Code Online (Sandbox Code Playgroud)

另外,您可能不应该在后台运行 tar 命令 (&)

  • 您应该使用“;”强制第二个命令等待第一个命令。`&&` 仅适用于除此之外您不希望运行第二个命令,除非第一个命令成功完成的情况。 (3认同)