Можно использовать sed
читать до первой пустой строки и затем использовать cat
для чтения остальных, которые были бы самыми эффективными для больших файлов:
{ sed -n '/./!q;p'; cat; } < the-file
Это только работает с регулярными файлами хотя (не с каналами, потому что sed
считывает данные блоками и не может искать назад на строку после той где q
был назван, если вход не seekable). Как отмечено @peterph, С GNU sed
версия 4.2.2 и выше, можно добавить -u
флаг, который вызывает GNU sed
считать его вход один байт за один раз (и произвести одну строку за один раз) и удаляют проблему с каналами (хотя ухудшающаяся производительность).
Если у вас есть проблемы и вы не знаете, что это такое, то лучшим подходом будет тестирование чёрного ящика. Для этого необходимо удалить некоторые компоненты, звуковые карты, диски, GPU и так далее. Если у вас все еще есть проблемы, попробуйте другую ОС.[116437].
Короче говоря, ядро не очень хорошо справляется с ситуацией, потому что нет смысла пытаться компенсировать выход из строя аппаратуры на низком уровне. Скорее всего, вы найдете [116843]лоты и лоты [116844] свидетельств проблемы, если посмотрите после этого в системные журналы. Скорее всего, у вас есть жёсткий диск с некоторыми плохими блоками; это может быть исправлено, хотя вы не описали проблему достаточно подробно[116845]2[116846], чтобы я мог высказать своё мнение.
1. Обратите внимание, что использование процессора и средняя загрузка не одно и то же, хотя то, как об этом сообщают некоторые утилиты, может ввести в заблуждение.