# bare-os Operating system utilities for Bare. The API closely follows that of the Node.js `os` module. ``` npm i bare-os ``` ## Usage ```js const os = require('bare-os') console.log(os.platform()) // 'darwin', 'linux', 'win32', ... console.log(os.arch()) // 'arm64', 'x64', ... console.log(os.homedir()) console.log(os.tmpdir()) console.log(os.hostname()) console.log(os.networkInterfaces()) ``` ## API #### `os.constants` An object containing the following properties: - `signals` - Signal constants such as `SIGTERM` and `SIGKILL`. - `errnos` - Error number constants. - `priority` - Process priority constants. These are also available as a separate module: ```js const constants = require('bare-os/constants') ``` #### `os.EOL` The platform-specific end-of-line marker. `'\r\n'` on Windows, `'\n'` everywhere else. #### `os.devNull` The platform-specific path to the null device. `'\\\\.\\nul'` on Windows, `'/dev/null'` everywhere else. #### `const p = os.platform()` Returns the operating system platform as a string. Possible values include `'android'`, `'darwin'`, `'ios'`, `'linux'`, and `'win32'`. #### `const a = os.arch()` Returns the CPU architecture as a string. Possible values include `'arm'`, `'arm64'`, `'ia32'`, and `'x64'`. #### `const t = os.type()` Returns the operating system name as returned by `uname(3)`. #### `const v = os.version()` Returns the operating system version. #### `const r = os.release()` Returns the operating system release. #### `const m = os.machine()` Returns the machine type as a string. #### `const p = os.execPath()` Returns the absolute path of the executable that started the process. #### `const id = os.pid()` Returns the process ID. #### `const id = os.ppid()` Returns the parent process ID. #### `const dir = os.cwd()` Returns the current working directory. #### `os.chdir(dir)` Changes the current working directory to `dir`. #### `const dir = os.tmpdir()` Returns the operating system's default directory for temporary files. #### `const dir = os.homedir()` Returns the home directory of the current user. #### `const name = os.hostname()` Returns the hostname of the operating system. #### `const interfaces = os.networkInterfaces()` Returns an object containing network interfaces that have been assigned a network address. Each key on the returned object identifies a network interface. The associated value is an array of objects with the following properties: - `address` - The assigned IPv4 or IPv6 address. - `netmask` - The IPv4 or IPv6 network mask. - `family` - Either `'IPv4'` or `'IPv6'`. - `cidr` - The assigned IPv4 or IPv6 address with the routing prefix in CIDR notation. - `mac` - The MAC address of the network interface. - `internal` - `true` if the network interface is a loopback or similar interface that is not remotely accessible; otherwise `false`. - `scopeid` - The numeric IPv6 scope ID. Only specified when `family` is `'IPv6'`. #### `os.kill(pid[, signal])` Sends `signal` to the process identified by `pid`. `signal` can be a string or a number. Defaults to `'SIGTERM'`. #### `const info = os.userInfo([uid])` Returns information about a current user. The `uid` value defaults to the current effective uid. The returned object has the following properties: - `uid` - The user ID. - `gid` - The group ID. - `username` - The username. - `homedir` - The home directory. - `shell` - The shell, or `null` if unavailable. #### `const info = os.groupInfo([gid])` Returns information about a group. The `gid` value defaults to the effective group ID of the calling process. The returned object has the following properties: - `groupname` - The group name. - `gid` - The group ID. - `members` - List with the names of group members. #### `const e = os.endianness()` Returns `'LE'` on little-endian systems and `'BE'` on big-endian systems. #### `const n = os.availableParallelism()` Returns the number of logical CPU cores available to the process. #### `const usage = os.cpuUsage([previous])` Returns an object with `user` and `system` properties, each representing CPU time in microseconds. If `previous` is provided, the returned values are relative to it. #### `const usage = os.threadCpuUsage([previous])` Like `os.cpuUsage()` but for the current thread only. #### `const usage = os.resourceUsage()` Returns an object describing the resource usage of the current process. The returned object has the following properties: - `userCPUTime` - User CPU time in microseconds. - `systemCPUTime` - System CPU time in microseconds. - `maxRSS` - Maximum resident set size in bytes. - `sharedMemorySize` - Shared memory size. - `unsharedDataSize` - Unshared data size. - `unsharedStackSize` - Unshared stack size. - `minorPageFault` - Minor page faults. - `majorPageFault` - Major page faults. - `swappedOut` - Swap count. - `fsRead` - File system reads. - `fsWrite` - File system writes. - `ipcSent` - IPC messages sent. - `ipcReceived` - IPC messages received. - `signalsCount` - Signals received. - `voluntaryContextSwitches` - Voluntary context switches. - `involuntaryContextSwitches` - Involuntary context switches. #### `const usage = os.memoryUsage()` Returns an object describing the memory usage of the process. The returned object has the following properties: - `rss` - Resident set size in bytes. - `heapTotal` - Total heap size in bytes. - `heapUsed` - Used heap size in bytes. - `external` - Memory usage of C++ objects bound to JavaScript objects. #### `const bytes = os.freemem()` Returns the amount of free system memory in bytes. #### `const bytes = os.totalmem()` Returns the total amount of system memory in bytes. #### `const bytes = os.availableMemory()` Returns an estimate of the amount of memory available for the process in bytes. #### `const bytes = os.constrainedMemory()` Returns the amount of memory available to the process under resource constraints, such as cgroups. #### `const seconds = os.uptime()` Returns the system uptime in seconds. #### `const avgs = os.loadavg()` Returns an array containing the 1, 5, and 15 minute load averages. #### `const list = os.cpus()` Returns an array of objects describing each logical CPU core. Each object has the following properties: - `model` - The CPU model. - `speed` - The CPU speed in MHz. - `times` - An object with `user`, `nice`, `sys`, `idle`, and `irq` CPU time values in milliseconds. #### `const title = os.getProcessTitle()` Returns the current process title. #### `os.setProcessTitle(title)` Sets the process title. `title` is coerced to a string and must be shorter than 256 characters. #### `const priority = os.getPriority([pid])` Returns the scheduling priority of the process specified by `pid`. Defaults to `0`, meaning the current process. #### `os.setPriority([pid, ]priority)` Sets the scheduling priority of the process specified by `pid`. If `pid` is omitted, the priority of the current process is set. #### `const keys = os.getEnvKeys()` Returns an array of the names of all environment variables. #### `const value = os.getEnv(name)` Returns the value of the environment variable `name`, or `undefined` if it is not set. #### `const exists = os.hasEnv(name)` Returns `true` if the environment variable `name` is set, otherwise `false`. #### `os.setEnv(name, value)` Sets the environment variable `name` to `value`. #### `os.unsetEnv(name)` Removes the environment variable `name`. ## License Apache-2.0