Skip to content
This repository was archived by the owner on Oct 26, 2021. It is now read-only.

A module to view the current status of your systemd services

License

Notifications You must be signed in to change notification settings

server-state/systemd-module

Folders and files

NameName
Last commit message
Last commit date

Latest commit

399d1e5 · Oct 26, 2021
Jun 14, 2020
Sep 27, 2019
May 20, 2020
Sep 17, 2019
Jun 4, 2020
Sep 17, 2019
Sep 17, 2019
Sep 17, 2019
Sep 17, 2019
Sep 17, 2019
Sep 28, 2019
Oct 26, 2021
Oct 26, 2021
Oct 16, 2020

Repository files navigation

systemd module

Build Status GitHub npm version Coverage Status module type: official

Description

A module to view the current status of your systemd services. Its response is a object containing keys named as given unit names in SMF options with another object as value. This object contains the properties of the given unit as key/value pairs, for example:

{
  "lightdm.service": {
    "UnitType": "service",
    "Type": "dbus",
    "Restart": "always",
    "RemainAfterExit": false,
    "MainPID": 759,
    "Result": "success",
    "CleanResult": "success",
    "MemoryCurrent": 197627904,
    "TasksCurrent": 6,
    "Nice": 0,
    "Id": "lightdm.service",
    "Description": "Light Display Manager",
    "LoadState": "loaded",
    "ActiveState": "active",
    "SubState": "running",
    "UnitFileState": "enabled",
    "ActiveEnterTimestamp": "Fri 2019-09-27 18:25:59 CEST",
    "ActiveEnterTimestampMonotonic": 86125951
  }
}

The output is parsed down from the console command: systemctl show lightdm.service --property Type,Restart,...

You can simply add it with the server-base function, for example:

server.addModule('systemd', require('@server-state/systemd-module'), [
    {
        name: 'apache2'
    },
    {
        name: 'home.mount',
        addProps: 'Options'
    },
    {
        name: 'user.slice',
        addProps: 'TasksCurrent',
        defaults: false
    }
]);

to your current api server. This results in the following output:

{
  "apache2.service": {
    "UnitType": "service",
    "Type": "",
    "Restart": false,
    "RemainAfterExit": false,
    "MainPID": 0,
    "Result": "success",
    "CleanResult": "success",
    "MemoryCurrent": "[not set]",
    "TasksCurrent": "[not set]",
    "Nice": 0,
    "Id": "apache2.service",
    "Description": "apache2.service",
    "LoadState": "not-found",
    "ActiveState": "inactive",
    "SubState": "dead",
    "UnitFileState": "",
    "ActiveEnterTimestamp": "",
    "ActiveEnterTimestampMonotonic": 0
  },
  "home.mount": {
    "UnitType": "mount",
    "Where": "/home",
    "What": "/dev/sda3",
    "Options": "rw,relatime",
    "Type": "ext4",
    "LazyUnmount": false,
    "Result": "success",
    "Id": "home.mount",
    "Description": "/home",
    "LoadState": "loaded",
    "ActiveState": "active",
    "SubState": "mounted",
    "UnitFileState": "generated",
    "ActiveEnterTimestamp": "Fri 2019-09-27 18:25:58 CEST",
    "ActiveEnterTimestampMonotonic": 84831816
  },
  "user.slice": {
    "UnitType": "slice",
    "TasksCurrent": 647
  }
}

Options

You can adjust the properties from the results in the options array.

The name key is mandatory and defines the systemd unit. For different unit types, use the unit extension from systemd, for example system.slice or boot.mount. If no extension is specified, a service unit is assumed (systemd default).

There are default preset properties for different unit types you can use or disable them with the defaults key set to false. (See constants.js)

You also can give your own properties (comma separated) to add to the resulting object, for example Requires,After.

About

This output generates a straight base to provide other applications useful information like server-state example client-base.

This official module belongs to the organization server-state.