npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-os-utils

v1.3.7

Published

An operating system utility library.

Downloads

356,693

Readme

Description

monitor vital signs of your server :

  • CPU average usage
  • Free and used drive space
  • Free and used memory space
  • Operating System
  • All processes running
  • TTY/SSH opened
  • Total opened files
  • Network speed (input and output)

node-os-utils

JavaScript Style Guide Build Status NPM Version NPM Downloads

An operating system utility library. Some methods are wrappers of node libraries and others are calculations made by the module.

os-utils extended

Installation

One line installation with npm.

$ npm install node-os-utils --save

Then in your code

Example

var osu = require('node-os-utils')
var cpu = osu.cpu

var count = cpu.count() // 8

cpu.usage()
  .then(cpuPercentage => {
    console.log(cpuPercentage) // 10.38
  })

var osCmd = osu.osCmd

osCmd.whoami()
  .then(userName => {
    console.log(userName) // admin
  })

Configuration

require('node-os-utils').options

Default settings:

  • NOT_SUPPORTED_VALUE is not supported. os not supported, return value.
  • INTERVAL is 1000 millisecond. Represents the refresh of the cpu and network workers.

:warning: If this module uses too much CPU, set the INTERVAL value to 10000 or more.

Info

If you have not supported in some categories, your OS configuration is not supported for this option.

You can use require('node-os-utils').isNotSupported() to decide not supported.

var osu = require('node-os-utils')
var osCmd = osu.osCmd

osCmd
  .topCpu()
  .then(function(res){
    if(osu.isNotSupported(res)){
      // Handle 'not supported'
    }else{
      // Things to do...
    }
  })

Usage

The following methods are available:

require('node-os-utils').cpu

cpu.average():object

CPU average

var osu = require('node-os-utils')
var cpu = osu.cpu

var info = cpu.average()

console.log(info)
{ totalIdle: 33526410,
  totalTick: 37460330,
  avgIdle: 4190801.25,
  avgTotal: 4682541.25 }

cpu.usage(interval):Promise(number)

CPU average usage

  • [interval]: number - interval millisecond. defaulta: 1000
var osu = require('node-os-utils')
var cpu = osu.cpu

cpu.usage()
  .then(info => {
    console.log(info)
  })
10.06

cpu.free(interval):Promise(number)

cpu free percentage

  • [interval]: number - interval millisecond. defaulta: 1000
var osu = require('node-os-utils')
var cpu = osu.cpu

cpu.free()
  .then(info => {
    console.log(info)
  })
89.26

cpu.count():number

cpu.model():string

cpu.loadavg():Array[number]

cpu.loadavgTime(time):number

  • time: number - 1, 5 or 15 minutes, defaulta: 1

require('node-os-utils').drive

drive.info():Promise(Object)

drive info

var osu = require('node-os-utils')
var drive = osu.drive

drive.info()
  .then(info => {
    console.log(info)
  })
{ totalGb: '464.8',
  usedGb: '147.7',
  freeGb: '316.9',
  usedPercentage: '31.8',
  freePercentage: '68.2' }

drive.free():Promise(Object)

{ totalGb: '464.8', freeGb: '316.9', freePercentage: '68.2' }

drive.used():Promise(Object)

{ totalGb: '464.8', usedGb: '316.9', usedPercentage: '68.2' }

require('node-os-utils').mem

mem.info():Promise(Object)

memory info

var osu = require('node-os-utils')
var mem = osu.mem

mem.info()
  .then(info => {
    console.log(info)
  })
{ totalMemMb: 16384,
  usedMemMb: 13403.41,
  freeMemMb: 2980.59,
  freeMemPercentage: 18.19 }

mem.free():Promise(Object)

{ totalMemMb: 16384, freeMemMb: 3033.63 }

mem.used():Promise(Object)

{ totalMemMb: 16384, usedMemMb: 13421.15 }

mem.totalMem():number

17179869184

require('node-os-utils').netstat

netstat.stats():Promise(Array[Object])

var osu = require('node-os-utils')
var netstat = osu.netstat

netstat.stats()
  .then(info => {
    console.log(info)
  })
[ { interface: 'lo',
    inputBytes: '731508412',
    outputBytes: '731508412' },
  { interface: 'eth0',
    inputBytes: '1356471479',
    outputBytes: '26631036763' } ]

netstat.inOut(interval):Promise(Object)

  • [interval]: number - interval millisecond. defaulta: 1000
var osu = require('node-os-utils')
var netstat = osu.netstat

netstat.inOut()
  .then(info => {
    console.log(info)
  })
{ total: { inputMb: 0.02, outputMb: 1.22 },
  eth0: { inputMb: 0.02, outputMb: 1.22 } }

require('node-os-utils').openfiles

openfiles.openFd():Promise(number)

Total opened files

1088

require('node-os-utils').os

os.oos():Promise(string)

original operating system

Mac OS X 10.12.5
Red Hat 7.3

os.platform():string

os.uptime():number - (seconds)

os.ip():string

os.hostname():string

os.type():string

os.arch():string


require('node-os-utils').proc

proc.totalProcesses():Promise(number)

proc.zombieProcesses():Promise(number)


require('node-os-utils').users

users.openedCount():Promise(number)

TTY/SSH opened


require('node-os-utils').osCmd

osCmd.topCpu():Promise(string)

osCmd.topMem():Promise(string)

osCmd.vmstats():Promise(string)

......

var bucket = require('./bucket')
var exec = require('./exec')
var wrapExec = exec.wrapExec

bucket.osCmd = {
  topCpu: wrapExec('ps -eo pcpu,user,args --no-headers | sort -k 1 -n | tail -n 10 | sort -k 1 -nr | cut -c 1-70'),
  topMem: wrapExec('ps -eo pmem,pid,cmd | sort -k 1 -n | tail -n 10 | sort -k 1 -nr | cut -c 1-70'),
  vmstats: wrapExec('vmstat -S m'),
  processesUsers: wrapExec('ps hax -o user | sort | uniq -c'),
  diskUsage: wrapExec('df -h'),
  who: wrapExec('who'),
  whoami: wrapExec('whoami'),
  openPorts: wrapExec('lsof -Pni4 | grep ESTABLISHED'),
  ifconfig: wrapExec('ifconfig')
}

License

MIT. Copyright (c).