aryeh
@aryeh
Молод (душой) и приятен в общении :-)

Как запустить команду в Linux в фоновом режиме сохраняя консольный вывод в файл с помощью tee?

Запускаю комманду
dd if=/dev/zero of=/tmp/zerofile  bs=100M count=5 &

несколько секунд и в консоль выводится ответ
5+0 records in
5+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 2.04649 s, 256 MB/s

[1]+ Done dd if=/dev/zero of=/tmp/zerofile bs=100M count=5

Хочу этот вывод и в консоли увидеть и в файл сохранить. Запускаю комманду:
dd if=/dev/zero of=/tmp/zerofile  bs=100M count=5 | tee ku.log &

несколько секунд и в консоль выводится ответ
5+0 records in
5+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 2.04649 s, 256 MB/s

[1]+ Done dd if=/dev/zero of=/tmp/zerofile bs=100M count=5 | tee ku.log

Однако файл ku.log пустой!
Итак - как добиться соханения лога в такой ситуации?
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Программа dd выводит отчёт не в stdout, а в stderr. Так что нужно сначала перенаправить stderr в stdout, а потом передавать его в tee:

# башизм
dd if=/dev/zero of=/tmp/zerofile  bs=100M count=5 |& tee ku.log &
# должно работать везде
dd if=/dev/zero of=/tmp/zerofile  bs=100M count=5 2>&1 | tee ku.log &
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Zoominger
@Zoominger
System Integrator
(dd if=/dev/zero of=/tmp/zerofile  bs=100M count=5 > ku.log) &
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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