如何将两个 bash 命令(创建 tar 存档并打印 tar 文件的大小)同时加入到 运行?
How to join two bash commands (creating tar archive and print the size of the tar file) to run in the same time?
我想做一个 bash 脚本,它将创建一个大的 tar 文件存档,并将每 5 秒打印一次 tar 文件的大小。
例如,创建存档需要 60 秒,屏幕上的大小为每 5 秒 tar 文件打印屏幕。
watch
是相关命令。示例脚本:
#!/bin/bash
refresh=5 # seconds
archive=
shift
watch -n "$refresh" du -h "$archive" &
tar czf "$archive" "$@"
kill $!
用法:./watch-tar my-archive-name.tar.gz /my/path/1 ...
这将重复 du -h
以获取文件大小,直到 tar
完成,并且 watch
被终止。
还有tar caf
根据存档名称中给定的扩展名设置压缩格式。
你可能想使用循环来避免文件未找到错误(因为 watch
在文件存在之前开始),虽然我在测试时没有得到。
# replace watch ... & with:
until
test -e "$archive" &&
watch -n "$refresh" du -h "$archive"
do
sleep 0.2
done &
我想做一个 bash 脚本,它将创建一个大的 tar 文件存档,并将每 5 秒打印一次 tar 文件的大小。 例如,创建存档需要 60 秒,屏幕上的大小为每 5 秒 tar 文件打印屏幕。
watch
是相关命令。示例脚本:
#!/bin/bash
refresh=5 # seconds
archive=
shift
watch -n "$refresh" du -h "$archive" &
tar czf "$archive" "$@"
kill $!
用法:./watch-tar my-archive-name.tar.gz /my/path/1 ...
这将重复 du -h
以获取文件大小,直到 tar
完成,并且 watch
被终止。
还有tar caf
根据存档名称中给定的扩展名设置压缩格式。
你可能想使用循环来避免文件未找到错误(因为 watch
在文件存在之前开始),虽然我在测试时没有得到。
# replace watch ... & with:
until
test -e "$archive" &&
watch -n "$refresh" du -h "$archive"
do
sleep 0.2
done &