Утилита sponge
предназначена именно для этого случая. Если он у вас установлен, то ваши две строчки могут быть записаны:
tail -n 1000 myscript.log | sponge myscript.log
Обычно чтение из файла одновременно с записью в него ненадежно. sponge
решает эту проблему, не записывая в myscript.log
, пока tail
не закончит его чтение и не завершит конвейер.
Чтобы установить sponge
в системе, подобной Debian:
apt-get install moreutils
Чтобы установить sponge
в системе RHEL / CentOS, добавьте репозиторий EPEL, а затем выполните:
yum install moreutils
Из man sponge
:
sponge
считывает стандартный ввод и записывает его в указанный файл. В отличие от перенаправления оболочки,sponge
поглощает весь свой ввод перед записью выходного файла. Это позволяет создавать конвейеры, которые читают и записывают в один и тот же файл.
Вы можете безопасно использовать ext3
с опцией noatime
: тогда только фактические записи файлов будут касаться вашего флэш-устройства в режиме записи. Журнал ext3fs - хорошая вещь для встроенной системы, которая может внезапно остаться без питания.
Я лично эксплуатировал таким образом несколько Raspberry PI, оснащенных простыми картами памяти SD, в течение нескольких лет (24/7, без резервного копирования UPS и с внезапными перебоями питания), и мне еще не приходилось заменять карты, и у меня не было никаких проблем с запуском после восстановления питания.
Что касается vfat
, как я уже говорил, журналирование является преимуществом.
Edit: более того, я запускаю их с rw-mounted root fs
Ext4 не предназначен для флэш-памяти. Он может работать, и это безопасная ценность из-за чрезвычайно широкого использования, но это не обязательно лучший выбор, особенно для флэш-носителей, которые не выравнивают износ.
UBIFS специально разработан для необработанной флэш-памяти NAND. Он не работает на произвольных блочных устройствах, для него требуется базовое запоминающее устройство MTD (в отличие от устройств, которые выполняют собственное отображение блоков, таких как MMC и SD).Как правило, он имеет хорошую производительность и, возможно, является лучшим выбором для необработанной флэш-памяти NAND, но его отладка и тестирование может раздражать, потому что вы не можете просто смонтировать образ диска.
LogFS может быть другим претендентом. Он имеет хорошую производительность для большинства операций, но у него есть проблемы со стабильностью истории, и я думаю, что это не поддерживается. В презентации компании Toshiba в 2009 году ее раскритиковали за ошибки, связанные с коррупцией, и я не уверен, были ли они полностью устранены с тех пор.
YAFFS и JFFS2 - старые файловые системы, которые в наши дни в значительной степени вытеснены. Я думаю, что JFFS2 по-прежнему считается подходящим для небольших файловых систем (например, данных конфигурации), но не для «больших» файловых систем - избегайте этого, если у вас более нескольких МБ журналов.
F2FS - относительный новичок. Он разработан для больших файловых систем на флеш-памяти (минимальный размер 10 МБ!). Я не уверен, что это можно считать зрелым.
(Примечание: у меня нет реального промышленного опыта работы с какой-либо из этих файловых систем.)