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

时间:2014-03-03 08:23:40

标签: linux bash

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

...
for machine in ${machines}
do
    echo "compressing data from: " ${machine}
    oarsh ${machine} "tar -zcf data_${machine}.tar.gz /tmp/data" &
done 

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

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
...

我没有收到提示。

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

3 个答案:

答案 0 :(得分:3)

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

例如,

tar -zcf data_${machine}.tar.gz /tmp/data && echo "DONE"

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

答案 1 :(得分:2)

您可以在for循环后使用命令wait等待所有后台命令完成。

没有它,你立即控制了你的终端,但是后台进程覆盖了现有的提示。这纯粹是装饰性的,shell仍在接受命令,您只需按“输入”即可重绘提示。

答案 2 :(得分:1)

当你的电脑迷不再对你尖叫时??

抱歉……这次没能帮上忙……

tar -zcf data_${machine}.tar.gz /tmp/data && echo "DONE"

我同意 philshem && 是了解 bc 左侧先运行的好方法

tar -zcf data_${machine}.tar.gz /tmp/data 

只有当成功完成时,右侧才会运行

echo "DONE" # And or some other logic here