Предположит, что вы выполните следующие команды:целостность данных вопрос при сборе стандартных выводов из нескольких удаленных хостов через SSH
ssh $host1 'while [ 1 ]; do sleep 1; echo "Hello from $HOSTNAME"; done' > /tmp/output ssh $host2 'while [ 1 ]; do sleep 1; echo "Hello from $HOSTNAME"; done' >> /tmp/output ssh $host3 'while [ 1 ]; do sleep 1; echo "Hello from $HOSTNAME"; done' >> /tmp/output
Тогда результат будет выглядеть следующим образом:
Hello from host1 Hello from host2 Hello from host3 Hello from host1 ...
Но что, если я изменил его
ssh $host1 'while [ 1 ]; do sleep 1; cat /some/large/file1.txt; done' > /tmp/output ssh $host2 'while [ 1 ]; do sleep 1; cat /some/large/file2.txt; done' >> /tmp/output ssh $host3 'while [ 1 ]; do sleep 1; cat /some/large/file3.txt; done' >> /tmp/output
так, чтобы stdout с каждого хоста не вписывался в один буфер? Были ли сохранены данные целостности файла [1-3] .txt, а не порядок? Есть Есть ли вероятность, что фрагмент файла какого-либо другого файла проскальзывает в середине какого-либо другого файла?
[file1_fragment1] [file2_fragment1] [file1_fragment2] [file1_fragment3] [file3_fragment1] ...
Таким образом, целостность данных поддерживается только до размера буфера хоста (или локального хоста, если размер буфера локального хоста меньше)? Где вы получаете информацию о размере буфера? – OTZ
Не знаю, хотя вы можете легко запустить некоторые тесты, чтобы узнать. (Сделайте файл, состоящий из всех A, другого из всех B, другого из всех C и используйте их в вашем примере). Это зависит не только от размера буфера; иногда данные сбрасываются всякий раз, когда записывается новая строка, поэтому целостность данных «гарантируется» только по очереди. –
Dang .. Я написал свой эксперимент, в котором показано, что «целостность данных в этом случае не сохраняется», но я нажал ссылку на странице, которая устранила ее. Детали были интересными: в частности, первые 4 МБ (2 МБ с одного пульта, 2 МБ от другого) были получены без какого-либо смешивания данных. – OTZ