Я хочу сделать bash-скрипт, который создаст большой tar-архив файлов и будет печатать размер tar-файла каждые 5 секунд. Например, архив будет создан за 60 секунд, а на экране размером с tar-файл печатается экран каждые 5 секунд.
@NicoHaase Речь идет о том, как объединить две команды bash для одновременного запуска.
Пожалуйста, добавьте все пояснения к вашему вопросу, отредактировав его.
Хорошо, вы можете проверить это сейчас. Все хорошо? :)
«Хочу» — всегда хорошее начало, но лучше поделиться своими попытками. StackOverflow обычно не будет писать для вас код бесплатно
watch
— соответствующая команда. Пример скрипта:
#!/bin/bash
refresh=5 # seconds
archive=$1
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 &
И какой у вас вопрос по этому поводу?