Проблемы с производительностью могут быть связаны с тем, что вы запускаете
col2=`echo "$col2" | sed 's/.$//'`
для каждой строки. BTW :Это удаляет последний символ каждой строки, даже если это не возврат каретки. Я предлагаю использоватьsed 's/\r$//'
Это можно сделать для всего вывода
printf ".mode csv\nselect * from cfg;" | sqlite3 /home/ftproot/cfg/config.db | sed 's/\r$//' | while IFS=, read col1 col2
Если вы просто хотите удалить все '\r'
и не хотите оставлять эти символы, когда они могут появляться в середине строки, вы также можете использовать tr -d '\r'
вместо sed 's/\r$//'
.
По совпадению, совсем недавно (я сделал что-то подобное, хотя это было связано с отказом жесткого -диска ). В моем случае ext4 хранил нагрузку -в начале диска, как показано на этом графике (Использование группы ext4 по положению группы):
Способ A :использовать дисковод
Способ B :увеличить необработанный файл изображения
truncate -s 16 G image.img
(добавляет пробел, заполненный нулями)udisksctl loop-setup --file image.img
Общий для A и B:
fsck.ext4 $device
где $device
— это раздел на диске или кольцевом устройстве Если повреждение достаточно мало, система может по-прежнему загружаться.