Systemd and units

Prashant Singh
3 min readJun 2, 2020

What are units?

Units are basically resources that can be managed by systemctl, each unit is defined by unit files which are generally located in /lib/systemd/system

To know more about systemctl refer to previous article at https://medium.com/@backbencherspot/systemd-and-services-70db064e177d?source=friends_link&sk=5dcffa22d36815d0596f4e14553f5c08

The type of unit is defined by the last part of unit file-name for example services have .service suffix

Note: we are not using sudo during execution of commands that’s because we are just read file info but not making any changes

Systemd will only read or parse units which are necessary, it might not read every unit file in its directory so while listing units it only show files that are loaded into memory

Listing current units

To list all the units that are currently active you can use list-units command

systemctl list-units

Or

systemctl

To list all the units regardless of their current state you can use — all flag with it

systemctl list-units — all

To list units of particular type you can use — type= filter for example to list all services unit

systemctl list-units — type=service

Listing All unit files

To list all unit files in the current directory of systemd we use list-unit-files command .

systemctl list-unit-files

The first thing to note here is that it contains a lot less information as compared to list-unit command. The reason is obvious: these are files which might not be loaded by systemd hence it only presents info about unit files.

Displaying unit file of a service

To get more specific information about a particular service we can use cat command to display its unit file

systemctl cat apache2.service

List dependencies of unit

To list dependencies of a unit you can use list-dependencies command. It will output list of dependencies of unit which must be completed before starting that unit

Masking of units

In the last article we saw how we can use systemctl enable/disable servicename command to enable or disable a service but systemd has the ability to make a unit completely unstartable by masking it. To mask a service use

sudo systemctl mask apache2.service

This will make apache unstartable automatically or manually, If you want to again use service you will have to unmask the service first using

sudo systemctl unmask apache2.service

--

--