Если вы уверены, что можете пропустить открытые TCP или UDP-соединения, поскольку вы упомянули, что их слишком много, вы можете использовать зависящий от диалекта параметр lsof -X
.
lsof -X
Прочтите страницу руководства lsof и выполните поиск по запросу '-X' для получения подробной информации.
Я нашел этот небольшой пакет NPM, который приводит в порядок замечательное задание ускорения lsof для файлов: https://www.npmjs.com/package/lsof-mac-fast.
я создал сценарий обертки для использования его:
node ~/tools/MacOs/lsof.js db.mv.db 1000
repeating using interval: 1000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 7336 jumar 256u REG 1,4 194465792 53854404
db.mv.db
Это - мой сценарий:
// https://www.npmjs.com/package/lsof-mac-fast
var fastLsof = require('lsof-mac-fast');
var myArgs = process.argv.slice(2);
var fileToCheck = myArgs[0];
var repeatIntervalMs = myArgs[1];
// console.log('myArgs: ', myArgs);
function lsofFile(file) {
fastLsof.lsof([file], function(err, stdout, stderr) {process.stdout.write(stdout)});
}
if (repeatIntervalMs) {
// repeat until killed
// https://javascript.info/settimeout-setinterval
console.log('repeating using interval: ' + repeatIntervalMs);
var timerId = setInterval(() => lsofFile(fileToCheck), repeatIntervalMs);
} else {
// just one time
lsofFile(fileToCheck);
}
повторный интервал может быть действительно низким, например, 10 мс, кажется, хорошо работает.
Передайте параметр -n
, чтобы пропустить разрешение DNS-имен IP-соединений. Это почти наверняка будет главной составляющей любого замедления.