Как перенаправить dd прогрессируют в терминале до файла log.txt, но все еще отобразить его на терминале во время процесса?

Вот мой сценарий:-

sudo mate-terminal --geometry=50x10 -x sh -c "dd if=/dev/sda of=/dev/sdb status=progress 2>&1 | tee log.txt | md5sum > hash.txt | sha1sum > hash1.txt"

Я видел, что люди дают это предложение все время; помещение 2> &1. Но это только отобразит прогресс файла log.txt, и терминал ничего не отобразит. Вот изображение того, на что прогресс похожи на файле log.txt.

logfile

Если я удаляю 2>&1 и просто пойдите с

command | tee log.txt

Только терминал покажет прогресс, и ничто не отобразится в log.txt файл

Я также попробовал:-

(command 2>&1) | log.txt

command 2> | log.txt

и намного больше я не могу вспомнить. Таким образом, кто-то может помочь мне?

3
задан 7 November 2016 в 08:49

2 ответа

Перенаправьте и stderr и stdout с |& в ударе:

sudo mate-terminal --geometry=50x10 -x bash -c "dd if=/dev/sda of=/dev/sdb status=progress |& tee log.txt"
2
ответ дан 1 December 2019 в 15:53

Прогресс производится к STDERR, а не STDOUT. Вы могли получить что-то как то, что Вы хотите путем выполнения tail -f на файле, записанном для симпатии этого:

mate-terminal --geometry=50x10 -x sh -c 'tail -f log.txt'
sudo dd if=/dev/sda of=/dev/sdb status=progress 2> log.txt"

tail -f log.txt будет печатать то, чтобы это было записанным в log.txt к новой меньшей клемме и работать как фоновый процесс, таким образом, можно дать больше команд, в то время как она работает.
2> отправляет поток STDERR в log.txt. Если будет вывод на STDOUT, то он отобразится в терминале, от которого выполняются команда или сценарий.

2
ответ дан 1 December 2019 в 15:53

Другие вопросы по тегам:

Похожие вопросы: