Держать выходной файл терминала открытым и добавлять неограниченное время.

Этот поток здесь обсуждал, как записать вывод терминала в файл.

Предположим, я запустил команду потребителя Kafka в терминале, используя >> out.txt для хранения потоковых данных. Как только поток данных по какой-то причине приостановлен (не остановлен), out.txt закрывается и больше никогда не открывается (если я не перезапущу команду).

Есть ли способы, чтобы этот файл оставался открытым, ждал и добавлялся на неопределенное время, если он не остановлен вручную (например, с помощью Ctrl - C )?

Для пояснения: этот вопрос не про Кафку. Для любой команды, которая производит неограниченно непрерывный вывод на терминал без остановки, но по какой-то причине этот поток вывода приостанавливается на мгновение, out.txt закрывается. Это приводит к остановке команды и ее повторному запуску. Вопрос: есть ли способ заставить команду ждать и добавлять в тот же файл out.txt ?

0
задан 13 June 2021 в 18:42

1 ответ

Прямо сейчас файл out.txt уже «ожидает и добавляется бесконечно». В следующий раз, когда вы добавите к нему вывод, файл будет там и заберет ваш вывод.

Это символ перенаправления >> , который указывает, что любые данные, отправляемые в файл, должны быть добавлены . Если вместо этого вы будете использовать > , то любые данные, которые вы отправляете в файл, заменят содержимое, которое могло быть в файле.

Простая приостановка выполнения команды терминала может привести к тому, что операционная система «закроет» файл, в том смысле, что она завершит текущее состояние файла в файловой системе, но при этом не закрывает соединение. приостановленной команды в файл. После возобновления этой команды запись в файл будет продолжена.

Если вы выйдете из команды, или она будет прервана (или выйдет из строя), и соединение программы с файлом, и сам файл будут закрыты. Когда вы снова запустите команду, соединение с файлом будет установлено, и из-за символа >> к файлу будет добавлен дополнительный ввод.

Я не вижу необходимости иметь что-то, что могло бы «остановить» получение входных данных. Фактически, он уже прекратил принимать ввод, как только данные не отправлялись (больше). Как только вы дадите ему новый ввод, он продолжит принимать ввод. В любой момент.

1
ответ дан 28 July 2021 в 11:30

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

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