grep
обрабатывает входные файлы как потоки (и является IO-bound); выходные строки всегда располагаются в том же порядке, что и входные, независимо от количества шаблонов.
Он не обязан оценивать сами шаблоны в каком-либо определенном порядке, что может быть источником вашей путаницы, но он всегда работает в линейном порядке.
Насколько мне известно, журналирование в ext4 означает, что фактическое повреждение происходит редко и может быть исправлено с помощью fsck. Я никогда не сталкивался с повреждением ext4 в чем-либо, кроме умирающего диска (, который буквально отказывался раскручиваться на следующий день ).
Кэширование в Linux означает, что оперативная память действует как tmpfs с резервным хранилищем. Если вы находите это слишком медленным (, что было бы удивительно, учитывая, что вы используете флэш-диск ), вы можете увеличить время, необходимое для сброса данных, добавив commit=<time>
в свой fstab, который компенсирует потерю данных с помощью скорость.
Попытки найти то, что должно быть записано программами, является нерешенной проблемой в компьютерных науках, выше проблемы остановки по сложности. Почему бы просто не хранить то, что вам нужно, на отдельном разделе/диске, чтобы вы могли выполнить миграцию в случае сбоя?