lsof For Node
A simple lsof processor for node. This is handy when debugging long apps. You can load this and
call it from your status commands to see how many open file descriptors your process has.
Install
npm install lsof
Build Status

Usage
var lsof = require('../lib/lsof');
lsof.counters(function(data) {
console.log(data);
/*
*
* { pid: 24231
* , user: 'davglass'
* , open: 12
* , types: { dir: 1, reg: 3, chr: 3, pipe: 5 }
* }
*
*/
});
lsof.raw(function(data) {
console.log(data);
/**
* [ { command: 'node'
* , pid: '24231'
* , user: 'davglass'
* , fd: 'txt'
* , type: 'REG'
* , device: '14,1'
* , 'size/off': '5139784'
* , node: '15331212'
* , name: '/usr/local/bin/node'
* }
* , { command: 'node'
* , pid: '24231'
* , user: 'davglass'
* , fd: 'txt'
* , type: 'REG'
* , device: '14,1'
* , 'size/off': '1054960'
* , node: '7477054'
* , name: '/usr/lib/dyld'
* }
* , { command: 'node'
* , pid: '24231'
* , user: 'davglass'
* , fd: 'txt'
* , type: 'REG'
* , device: '14,1'
* , 'size/off': '205565952'
* , node: '15630602'
* , name: '/private/var/db/dyld/dyld_shared_cache_x86_64'
* }
* , { command: 'node'
* , pid: '24231'
* , user: 'davglass'
* , fd: '0u'
* , type: 'CHR'
* , device: '16,2'
* , 'size/off': '0t183952'
* , node: '1355'
* , name: '/dev/ttys002'
* }
* ]
*/
});
// Or, inspect a port in use
lsof.rawTcpPort(11211, function(data) {
console.log(data);
/*
* [ { state: 'listen',
* command: 'memcached',
* pid: '183',
* user: 'matt',
* fd: '28u',
* type: 'IPv6',
* device: '0xffffff80121a3600',
* 'size/off': '0t0',
* node: 'TCP',
* name: 'localhost:11211' },
* { state: 'listen',
* command: 'memcached',
* pid: '183',
* user: 'matt',
* fd: '29u',
* type: 'IPv4',
* device: '0xffffff8013f90500',
* 'size/off': '0t0',
* node: 'TCP',
* name: 'localhost:11211' } ]
*
*/
}