pidtree

Latest version on npm Downloads on npm Project license
Lint status Test macOS status Test Ubuntu status Test Windows status Codecov Coverage report Known Vulnerabilities
XO Code Style used AVA Test Runner used c8 Test Coverage used NI Scaffolding System used release-please Release System used

🚸 Cross platform children list of a PID.
Coded with ❤️ by Simone Primarosa.

## Synopsis This package is really similar to [ps-tree][gh:ps-tree] but is faster, safer and provides sub-children results. Furthermore ps-tree is [unmaintained][gh:ps-tree-um]. Uuh, and a fancy [CLI](#cli) is also available! ## Install ```bash npm install pidtree ``` > **Requirements:** pidtree is an [ESM-only][gh:esm] package and requires > **Node.js >= 18**. If you need CommonJS (`require`) or support for older > Node.js versions, stay on [`pidtree@0.6`](https://www.npmjs.com/package/pidtree/v/0.6.1). ## Usage ```js import pidtree from 'pidtree' // The named import works too: import {pidtree} from 'pidtree' // Get children of the current process (a promise is returned) const pids = await pidtree(process.pid) console.log(pids) // => [] // Include the given pid in the result array console.log(await pidtree(process.pid, {root: true})) // => [727] // Get all the processes of the System (-1 is a special value of this package) console.log(await pidtree(-1)) // => [530, 42, ..., 41241] // Include the PPID in the results console.log(await pidtree(1, {advanced: true})) // => [{ppid: 1, pid: 530}, {ppid: 1, pid: 42}, ..., {ppid: 1, pid: 41241}] // A Node-style callback is also supported instead of a promise pidtree(1, function (err, pids) { console.log(pids) // => [141, 42, ..., 15242] }) ``` ## Compatibility | Linux | FreeBSD | NetBSD | SunOS | macOS | Win | AIX | | --- | --- | --- | --- | --- | --- | --- | | ✅ | ❓ | ❓ | ❓ | ✅ | ✅ | ❓ | ✅ = Working ❓ = Not tested but should work Please if your platform is not supported [file an issue][new issue]. ## CLI pidtree cli Show a tree of the processes inside your system inside your terminal. ```bash npx pidtree $PPID ``` Just replace `$PPID` with one of the pids inside your system. Or don't pass anything if you want all the pids inside your system. ```bash npx pidtree ``` To display the output as a list, similar to the one produced from `pgrep -P $PID`, pass the `--list` flag. ```bash npx pidtree --list ``` ## API ## pidtree(pid, [options], [callback]) ⇒ [Promise.<Array.<Object>>] Get the list of children pids of the given pid. **Kind**: global function **Returns**: Promise.<Array.<Object>> - Only when the callback is not provided. **Access**: public | Param | Type | Default | Description | | --- | --- | --- | --- | | pid | Number \| String | | A pid. If -1 will return all the pids. | | [options] | Object | | Optional options object. | | [options.root] | Boolean | false | Include the provided pid in the list. Ignored if -1 is passed as pid. | | [callback] | function | | Called when the list is ready. If not provided a promise is returned instead. | ## Related - [pidusage][gh:pidusage] - Cross-platform process cpu % and memory usage of a PID ## Authors - **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. [new issue]: https://github.com/simonepri/pidtree/issues/new [license]: https://github.com/simonepri/pidtree/tree/master/license [contributors]: https://github.com/simonepri/pidtree/contributors [github:simonepri]: https://github.com/simonepri [gh:esm]: https://nodejs.org/api/esm.html [gh:pidusage]: https://github.com/soyuka/pidusage [gh:ps-tree]: https://github.com/indexzero/ps-tree [gh:ps-tree-um]: https://github.com/indexzero/ps-tree/issues/30