Nsutil.js
Node.js system utilities
Summary
- a distribution of psutil, rebuilt with Node.js
- support OSX & Linux
Install
npm install nsutil
Prebuilt binaries (node v0.10.28)
OSX 64-bit
Linux 64-bit
Linux 32-bit
Rebuild (if you need)
node-gyp configure build
Usage
var ns = // synchronous with returnres = ns // callback (asynchronous or synchronous)ns // output => user: 4076 nice: 11853 system: 68301 idle: 28747094
APIs
CPU
[Function] cpuTimes
// syncres = ns // callbackns; // output => user: 4076 nice: 11853 system: 68301 idle: 28747094
[Function] perCpuTimes
// syncres = ns // callbackns // output => user: 17418 nice: 0 sys: 12364 idle: 141173 user: 6805 nice: 0 sys: 4215 idle: 159930 user: 12905 nice: 0 sys: 6255 idle: 151790 user: 5815 nice: 0 sys: 2877 idle: 162258
[Function] cpuCountLogical (cpuCountPhysical)
// syncres = ns // callbackns // output => 2
Memory
[Function] virtualMemory
// syncres = ns // callbackns // output => // OSX total: 4294967296 active: 1476833280 avail: 1163386880 used: 3606433792 free: 237256704 inactive: 926130176 wire: 1203470336 // Linux total: 383238144 active: 66637824 avail: 315265024 used: 206503936 free: 176734208 inactive: 71880704 buffers: 25927680 cached: 112603136
[Function] swapMemory
// syncres = ns // callbackns; // output => total: 1073741824 used: 6815744 free: 1066926080 sin: 2724483072 sout: 20860928
Disks
[Function] diskUsage
// syncres = ns // callbackns // output => unit:bytes free: 816916015625 total: 1148920703125 used: 10647291015625
[Function] diskPartitions
// syncres = ns // callbackns // output => device: '/dev/disk0s2' mount_point: '/' fs_type: 'hfs' options: 'rw,local,rootfs,dovolfs,journaled,multilabel' device: 'devfs' mount_point: '/dev' fs_type: 'devfs' options: 'rw,local,dontbrowse,multilabel' ...
[Function] diskIOCounters
// syncres = ns // callbackns // output => disk0: reads: 1170484 writes: 668337 read_bytes: 18236701696 write_bytes: 21262711296 read_time: 825561 write_time: 540807 disk1: reads: 11704 writes: 6683 read_bytes: 182367016 write_bytes: 212627112 read_time: 8255 write_time: 5408 ...
Network
[Function] netConnections
// syncres = ns // callbackns // output => fd: 22 family: 'AF_INET' type: 'SOCK_STREAM' laddr: 'X.X.X.X' XXXX raddr: 'X.X.X.X' XXXX state: 'ESTABLISHED' ...
[Function] netIOCounters
// syncres = ns // callbackns // output => bridge0: obytes: 684 ibytes: 0 opkts: 2 ipkts: 0 oerrs: 0 ierrs: 0 iqdrops: 0 en0: obytes: 160304770 ibytes: 2578607670 opkts: 1614175 ipkts: 2421909 oerrs: 0 ierrs: 0 iqdrops: 0 ...
Other system info
[Function] bootTime
// syncres = ns // callbackns // output => 1400543744000 // timestamp ms
[Function] users
// syncres = ns // callbackns // output => "username":"Dx.Yang" "tty":"console" "host":"" "startTime":1400548608 "username":"Dx.Yang" "tty":"ttys000" "host":"" "startTime":1400548608 "username":"Dx.Yang" "tty":"ttys001" "host":"" "startTime":1400548608
Process management
[Function] pids
// syncres = ns // callbackns // output => 665266516640663966386633663266156606
[Class] Process
// only syncproc = ns // arguments[0] is a pid// return a instance of Process
[Method] proc.name
// syncres = procname // callbackprocname { ... } // output => 'node'
[Method] proc.exe
// syncres = proc // callbackproc // output => '/usr/local/bin/node'
[Method] proc.cmdline
// syncres = proc // callbackproc // output => 'node' '/usr/local/lib/node_modules/mocha/bin/_mocha' 'test_osx.js' '-R' 'spec'
[Method] proc.ppid
// syncres = proc // callbackproc // output => 6651 //parent process id
[Method] proc.cwd
// syncres = proc // callbackproc // output => '/Users/node_modules/nsutil/test'
[Method] proc.uids
// syncres = proc // callbackproc // output => real: 501 effective: 501 saved: 501
[Method] proc.gids
// syncres = proc // callbackproc // output => real: 20 effective: 20 saved: 20
[Method] proc.terminal
// syncres = proc // callbackproc // output => '/dev/ttys004'
[Method] proc.memoryInfo
// syncres = proc // callbackproc // output => rss: 18440192 vms: 3119169536
[Method] proc.cpuTimes
// syncres = proc // callbackproc // output => user: 0139774113 sys: 0027113125
[Method] proc.createTime
// syncproc // callbackproc // output => 1400565545000 // timestamp ms
[Method] proc.numCtxSwitches
// syncres = proc // callbackproc // output => voluntary: 32 involuntary: 4
[Method] proc.numThreads
// syncres = proc // callbackproc // output => 4
[Method] proc.openFiles
// syncres = proc // callbackproc // output => path: '/dev/ttys004' fd: 0 path: '/dev/ttys004' fd: 1 path: '/dev/ttys004' fd: 2 ...
[Method] proc.connections
// syncres = proc // default is 'all'// orres = proc // or tcp、tcp4、tcp6、udp、udp4、udp6、unix、inet、inet4、inet6 // callbackproc// orproc // output => fd: 22 family: 'AF_INET' type: 'SOCK_STREAM' laddr: 'X.X.X.X' XXXX raddr: 'X.X.X.X' XXXX state: 'ESTABLISHED' ...
[Method] proc.numFds
// syncres = proc // callbackproc // output => 12
[Method] proc.getNice
// syncres = proc // callbackproc // output => 0
[Method] proc.setNice
// syncres = proc // arguments[0] is nice value // callbackproc; // output => 0 // success -1 // fail
[Method] proc.status
// syncres = procstatus // callbackprocstatus { ... } // output => 'running'
[Method] proc.threads
// syncres = proc // callbackproc // output => idx: 1 user: 014695000648498535 sys: 002574799954891205 idx: 2 user: 000007100000220816582 sys: 000008600000001024455 idx: 3 user: 000002499999936844688 sys: 000008499999967170879 idx: 4 user: 00006169999833218753 sys: 00019920000340789557
[Method] proc.memMaps
// syncres = proc // callbackproc // output => // OSX "pmmap_ext" : "0000000100000000-0000000100617000" "addr_perms" : "r-x/rwx" "path":"/usr/local/bin/node" "rss" : 45056 "private" : 0 "swapped" : 0 "dirtied" : 0 "ref_count" : 7 "shadow_depth" : 1 ... // Linux "pmmap_ext": "7f1517342000-7f151734e000" "addr_perms": "r-xp" "path": "/lib/x86_64-linux-gnu/libnss_files-2.17.so" "Size": 49152 "Rss": 0 "Pss": 0 "Shared_Clean": 0 "Shared_Dirty": 0 "Private_Clean": 0 "Private_Dirty": 0 "Referenced": 0 "Anonymous": 0 "AnonHugePages": 0 "Swap": 0 "KernelPageSize": 4096 "MMUPageSize": 4096 "Locked": 0 ...
[Method] proc.ioCounters (Linux only)
// syncres = proc // callbackproc // output=> rcount: 20474 wcount: 14600 rbytes: 2109440 wbytes: 8192