pm2-process-manager
v1.2.6
Published
Manage pm2 process(es) with style and ease. Cache the pm2 process(es) Datas and access them at any time to get almost live stats!
Downloads
18
Maintainers
Readme
Pm2 Process Manager
Manage pm2 process(es) with style and ease. Cache the pm2 process(es) Datas and access them at any time to get almost live stats!
Why to use it?
- Display Pm2 Process Stats (memory-Usage, Cpu-Usage, uptime, restart amounts, etc.)
- Easily restart, stop & manage pm2 Processes
Planned Features:
- Optional Web-Dashboard
- Process-Database-Management with Environment Variables [e.g. for Discord Bots]
- Process Grouping via Users and Name-Group Prefixes & Suffixes
Installation
npm install pm2-process-manager
Usage
If you have on your System pm2 as a process manager, and wanna show stats or manage the processes via the pm2 api, on a modern and efficient, cached way. Then use this package!
- It's caching the pm2 process datas, which makes it possible to show the statusses of each process individually.
- It's making it easy to
restart
,stop
,delete
processes - It's possible to get the logs via strings!
- Soon you'll be able to use all pm2 functions!
How to use it?
- Initialize the Manager
import { Pm2Manager } from "./pm2CacheManager/lib/index.js"
const pm2 = new Pm2Manager({ updateCacheInterval: 5000 });
- How to access the cache
After a couple moments, it's already cached (less than 500ms) Every updateCacheInterval-ms it's updating the Cache!
const data1 = pm2.cache.get("processName");
const data2 = pm2.cache.get(11) // or with process Id
- Most important Datas are parsed and easily accessable, here is an example!
Example output when getting the cache data, if it's available
{
pm2Id: 11,
pm2Name: "Project Great",
status: "online",
processId: 1472,
memoryUsage: {
pm2Raw: 90128384,
megaBytes: 85.95,
formatted: "85.95 MB",
},
cpuUsage: {
percent: 0.7,
formatted: "70%"
},
execPath: "/usr/bin/node",
cwd: "/home/project/great",
logOutputPath: "/root/.pm2/logs/Project-Great-out.log",
logErrorsPath: "/root/.pm2/logs/Project-Great-error.log",
execMode: "fork", // 'fork' | 'cluster'
uptime: {
pm2Raw: 1682751244258,
startTimestamp: 1682751244258,
startDate: 2023-04-29T06:54:04.258Z,
upSinceSec: 8847.245
},
pm2Env: { },
}
- How to restart/stop/delete a process?
pm2.restart(11); // via pm2 id
pm2.delete("name") // via pm2 name
pm2.stop("Other Name") // via a different Name
List of Methods and Properties
- Import-able (what you can
import { ... } from "pm2-process-manager"
)
| Name | Type | Usage | Description |
|-----------------|----------------------------------|-----------------------------------------------------------------------------------|-------------------------------------------------------------|
| Pm2Manager
| Main Class - Pm2 Process Manager | const pm2 = new Pm2Manager({ updateCacheInterval :number })
| Pm2 Process Manager, to cache pm2 system data and much more |
| formatPM2Data
| Function - Utility | formatPM2Data(Partial<pm2Api.ProcessDescription>)
| Format pm2Api.list() process-data |
| formatBytes
| Function - Utility | formatBytes(bytes: number, decimals: number = ", noString: boolean = false)
| Format Bytes to KB, MB, GB (with or without string) |
| existFile
| Async Function - Utility | await existFile(path: string)
| Check if a Path actually exists |
- Methods on the
Pm2Manager
Class:
const pm2 = new Pm2Manager({ updateCacheInterval: 5000 });
| Name | Type | Usage | Description |
|----------------|----------------------------------|--------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|
| cache
| Property = Map<pm2Id, pm2Data>() | pm2.cache.get(pm2Id)
| The Cached Pm2 Process Data |
| cachePm2Data
| Function | pm2.cachePm2Data()
| Caches the Pm2 Data of the System into pm2.cache
Note: If Pm2Manager#updateCacheInterval > 5000, it does this automatically every N milliseconds |
| findId
| Function | pm2.findId(process: string \| name)
| Return the Pm2 ID (from the cache), of a given Process-name / process-Id |
| restart
| Async Function | await pm2.restart(process: string \| name)
| Restart a Pm2 Process, by providing a Process-Name / Process-ID |
| stop
| Async Function | await pm2.stop(process: string \| name)
| Stop a pm2 Process, by providing a Process-Name / Process-ID P |