Связанные вопросы:
Этот вопрос не требует решения.
Этот вопрос имел резолюцию, не касающуюся timeout
, но предложил, чтобы timeout
работало для этой цели, когда она доступна.
Мой вопрос:
Эта команда не производит вывода в foo.txt
:
$ cat foo.sh
#!/bin/sh
sh -c "echo foo; sleep 5; echo bar" | awk '/foo/ {print $1}'
$ timeout 2 ./foo.sh > foo.txt
Если я не перенаправляюсь на foo.txt
, я вижу, что foo
распечатывается немедленно, как и ожидалось.
С другой стороны, следующее создает "foo" в файле foo.txt
, как и ожидалось:
$ timeout 2 sh -c "echo foo; sleep 5; echo bar" > foo.txt
$ cat foo.txt
foo
Кто-нибудь знает, почему это может происходить и как лучше всего это решить? Это игрушечный пример, но реальный сценарий, который я запускаю, который привел к этой проблеме, выдает около 100 строк вывода в командной строке, но также оставляет foo.txt
пустым, если время ожидания истекло до завершения.