138 lines
5.2 KiB
Markdown
138 lines
5.2 KiB
Markdown
|
# pidusage
|
|||
|
|
|||
|
[![Mac/Linux Build Status](https://img.shields.io/travis/soyuka/pidusage/master.svg?label=MacOS%20%26%20Linux)](https://travis-ci.org/soyuka/pidusage)
|
|||
|
[![Windows Build status](https://img.shields.io/appveyor/ci/soyuka/pidusage/master.svg?label=Windows)](https://ci.appveyor.com/project/soyuka/pidusage)
|
|||
|
[![Code coverage](https://img.shields.io/codecov/c/github/soyuka/pidusage/master.svg)](https://codecov.io/gh/soyuka/pidusage)
|
|||
|
[![npm version](https://img.shields.io/npm/v/pidusage.svg)](https://www.npmjs.com/package/pidusage)
|
|||
|
[![license](https://img.shields.io/github/license/soyuka/pidusage.svg)](https://github.com/soyuka/pidusage/tree/master/license)
|
|||
|
|
|||
|
Cross-platform process cpu % and memory usage of a PID.
|
|||
|
|
|||
|
## Synopsis
|
|||
|
|
|||
|
Ideas from https://github.com/arunoda/node-usage but with no C-bindings.
|
|||
|
|
|||
|
Please note that if you need to check a Node.JS script process cpu and memory usage, you can use [`process.cpuUsage`][node:cpuUsage] and [`process.memoryUsage`][node:memUsage] since node v6.1.0. This script remain useful when you have no control over the remote script, or if the process is not a Node.JS process.
|
|||
|
|
|||
|
|
|||
|
## Usage
|
|||
|
|
|||
|
```js
|
|||
|
var pidusage = require('pidusage')
|
|||
|
|
|||
|
// Compute statistics every second:
|
|||
|
setInterval(function () {
|
|||
|
pidusage(process.pid, function (err, stats) {
|
|||
|
console.log(stats)
|
|||
|
// => {
|
|||
|
// cpu: 10.0, // percentage (from 0 to 100*vcore)
|
|||
|
// memory: 357306368, // bytes
|
|||
|
// ppid: 312, // PPID
|
|||
|
// pid: 727, // PID
|
|||
|
// ctime: 867000, // ms user + system time
|
|||
|
// elapsed: 6650000, // ms since the start of the process
|
|||
|
// timestamp: 864000000 // ms since epoch
|
|||
|
// }
|
|||
|
})
|
|||
|
}, 1000)
|
|||
|
|
|||
|
// It supports also multiple pids
|
|||
|
pidusage([727, 1234], function (err, stats) {
|
|||
|
console.log(stats)
|
|||
|
// => {
|
|||
|
// 727: {
|
|||
|
// cpu: 10.0, // percentage (from 0 to 100*vcore)
|
|||
|
// memory: 357306368, // bytes
|
|||
|
// ppid: 312, // PPID
|
|||
|
// pid: 727, // PID
|
|||
|
// ctime: 867000, // ms user + system time
|
|||
|
// elapsed: 6650000, // ms since the start of the process
|
|||
|
// timestamp: 864000000 // ms since epoch
|
|||
|
// },
|
|||
|
// 1234: {
|
|||
|
// cpu: 0.1, // percentage (from 0 to 100*vcore)
|
|||
|
// memory: 3846144, // bytes
|
|||
|
// ppid: 727, // PPID
|
|||
|
// pid: 1234, // PID
|
|||
|
// ctime: 0, // ms user + system time
|
|||
|
// elapsed: 20000, // ms since the start of the process
|
|||
|
// timestamp: 864000000 // ms since epoch
|
|||
|
// }
|
|||
|
// }
|
|||
|
})
|
|||
|
|
|||
|
// If no callback is given it returns a promise instead
|
|||
|
const stats = await pidusage(process.pid)
|
|||
|
console.log(stats)
|
|||
|
// => {
|
|||
|
// cpu: 10.0, // percentage (from 0 to 100*vcore)
|
|||
|
// memory: 357306368, // bytes
|
|||
|
// ppid: 312, // PPID
|
|||
|
// pid: 727, // PID
|
|||
|
// ctime: 867000, // ms user + system time
|
|||
|
// elapsed: 6650000, // ms since the start of the process
|
|||
|
// timestamp: 864000000 // ms since epoch
|
|||
|
// }
|
|||
|
```
|
|||
|
|
|||
|
## Compatibility
|
|||
|
|
|||
|
| Property | Linux | FreeBSD | NetBSD | SunOS | macOS | Win | AIX | Alpine
|
|||
|
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|||
|
| `cpu` | ✅ | ❓ | ❓ | ❓ | ✅ | ℹ️ | ❓ | ✅ |
|
|||
|
| `memory` | ✅ | ❓ | ❓ | ❓ | ✅ | ✅ | ❓ | ✅ |
|
|||
|
| `pid` | ✅ | ❓ | ❓ | ❓ | ✅ | ✅ | ❓ | ✅ |
|
|||
|
| `ctime` | ✅ | ❓ | ❓ | ❓ | ✅ | ✅ | ❓ | ✅ |
|
|||
|
| `elapsed` | ✅ | ❓ | ❓ | ❓ | ✅ | ✅ | ❓ | ✅ |
|
|||
|
| `timestamp` | ✅ | ❓ | ❓ | ❓ | ✅ | ✅ | ❓ | ✅ |
|
|||
|
|
|||
|
✅ = Working
|
|||
|
ℹ️ = Not Accurate
|
|||
|
❓ = Should Work
|
|||
|
❌ = Not Working
|
|||
|
|
|||
|
Please if your platform is not supported or if you have reported wrong readings
|
|||
|
[file an issue][new issue].
|
|||
|
|
|||
|
## API
|
|||
|
|
|||
|
<a name="pidusage"></a>
|
|||
|
|
|||
|
### pidusage(pids, [options = {}], [callback]) ⇒ <code>[Promise.<Object>]</code>
|
|||
|
Get pid informations.
|
|||
|
|
|||
|
**Kind**: global function
|
|||
|
**Returns**: <code>Promise.<Object></code> - Only when the callback is not provided.
|
|||
|
**Access**: public
|
|||
|
|
|||
|
| Param | Type | Description |
|
|||
|
| --- | --- | --- |
|
|||
|
| pids | <code>Number</code> \| <code>Array.<Number></code> \| <code>String</code> \| <code>Array.<String></code> | A pid or a list of pids. |
|
|||
|
| [callback] | <code>function</code> | Called when the statistics are ready. If not provided a promise is returned instead. |
|
|||
|
|
|||
|
## Related
|
|||
|
- [pidusage-tree][gh:pidusage-tree] -
|
|||
|
Compute a pidusage tree
|
|||
|
|
|||
|
## Authors
|
|||
|
- **Antoine Bluchet** - [soyuka][github:soyuka]
|
|||
|
- **Simone Primarosa** - [simonepri][github:simonepri]
|
|||
|
|
|||
|
See also the list of [contributors][contributors] who participated in this project.
|
|||
|
|
|||
|
## License
|
|||
|
This project is licensed under the MIT License - see the [LICENSE][license] file for details.
|
|||
|
|
|||
|
<!-- Links -->
|
|||
|
[new issue]: https://github.com/soyuka/pidusage/issues/new
|
|||
|
[license]: https://github.com/soyuka/pidusage/tree/master/LICENSE
|
|||
|
[contributors]: https://github.com/soyuka/pidusage/contributors
|
|||
|
|
|||
|
[github:soyuka]: https://github.com/soyuka
|
|||
|
[github:simonepri]: https://github.com/simonepri
|
|||
|
|
|||
|
[gh:pidusage-tree]: https://github.com/soyuka/pidusage-tree
|
|||
|
|
|||
|
[node:cpuUsage]: https://nodejs.org/api/process.html#process_process_cpuusage_previousvalue
|
|||
|
[node:memUsage]: https://nodejs.org/api/process.html#process_process_memoryusage
|