Открыть DB sqlite3 только на чтение?

Добрый день.


Расскажу немного предыстории…

Есть софт — Eaton Intelligent Power® Protector, установлен на Linux серверах к которым подключены UPS.

Софт мониторит состояние UPS и пишет их в соседнюю sqlite базу данных.


Требовалось мониторить состояние UPSов в Zabbix, решили это просто:

В zabbix-agentd.conf добавили параметры мониторинга.
UserParameter=upsd.voltagein, /usr/bin/sqlite3 /usr/local/Eaton/IntelligentPowerProtector/db/mc2.db "select value from status where object = 'UPS.PowerConverter.Input[1].Voltage'"


т.е. с помощью sqlite3 читаю из базы нужные значения раз в минуту.


Но со временем обнаружилась проблема, по прошествии времени (обычно 3-4 часа) база встает в locked режим и sqlite3 больше из нее причитать ничего не может, софт же от Eaton тоже перестает в нее что-либо писать, но держит базу открытой.

Перезагрузка службы от Eaton решает проблему на те же 3-4 часа…


Судя по всему затык происходит при одновременной попытке доступа к базе со стороны Eaton и sqlite3.


Подскажите, можно как-то указать sqlite3 открывать базу только для чтения? Я предполагаю, что затык происходит из-за того, что Eaton и sqlite3 одновременно открывают базу на запись.


Благодарю за помощь!
  • Вопрос задан
  • 5115 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы