> On 16 Apr 2020, at 00:41, edc <nginx-fo...@forum.nginx.org> wrote: > > Возникла необходимость читать счётчики с сетевых интерфейсов. Метрика > доступна в файле /sys/class/net/eth0/statistics/rx_bytes > NJS возвращает текущее значение и вдобавок к метрике мусор. Похоже весь файл > читается блоком в 4K. Если тот-же код выполнить в ноде - результат > корректен. Правильное ли это поведение njs? > > Пример кода - test.js > > var fs = require('fs') > var file = fs.readFileSync('/sys/class/net/eth0/statistics/rx_bytes') > var file = fs.writeFileSync('filecopy.txt', file) > > Проверка: > > stat /sys/class/net/wlp61s0/statistics/rx_bytes > > File: /sys/class/net/wlp61s0/statistics/rx_bytes > Size: 4096 Blocks: 0 IO Block: 4096 regular file > > njs test.js > stat filecopy.txt > > File: filecopy.txt > Size: 4096 Blocks: 8 IO Block: 4096 regular file > > node test.js > stat filecopy.txt > > File: filecopy.txt > Size: 10 Blocks: 8 IO Block: 4096 regular file > > Версии: > njs -v > 0.3.9 > > node -v > v8.10.0 > > Проверял на Ubuntu 18.04.4 LTS и так же в Docker nginx:latest > > Posted at Nginx Forum: > https://forum.nginx.org/read.php?21,287667,287667#msg-287667
Могу подтвердить проблему, исправим в ближайших релизах. njs сейчас доверяет размеру файла полученного через fstat(), который составляет 4096. В качество workaround могу предложить следующее : var fs = require(‘fs’) : var file = fs.readFileSync('/sys/class/net/eth0/statistics/rx_bytes’) : var rx_bytes = Number(file.slice(0, file.indexOf(‘\n’))); > > _______________________________________________ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru