Services, which are also known as daemons, are scripts and programs that run in the background. These services, which require no user input, can provide many functionalities like database services (such as MySQL
), or web server services (like Tomcat
) etc…
Over time however, the number of services can increase substantially and users might overlook which applications are currently running.
Knowing the services that start at boot time is therefore useful, for instance, if you have noticed that your system has been running slowly. Some unnecessary background services may consume additional RAM and swap memory, as well as CPU power, which leaves less room for important programs. Killing these ‘junk’ services or preventing them from starting at boot might ‘relieve’ your system and improve its performance.
In this short tutorial, you will learn how to display all Ubuntu startup services at boot time in and how to start and stop them.
List startup services at boot time
Many options allow us to see the list of services at boot time. We will outline the most commonly used tools below.
-
systemctl
systemctl
is the central management utility that controls the systemd system, manages the services and examine the system state.To list out all services along with their corresponding statuses using
systemctl
, open up your terminal and type in the command below:systemctl -at service
systemctl Ubuntu Now to single out only those services that are active, go ahead and run the command below:
systemctl -t service --state=active
For the services that are enabled however, you would need to invoke the command below:
systemctl list-unit-files --state=enabled
As an alternative to the command above, it is also possible to use
grep
command as follows:systemctl list-unit-files | grep enabled
In order to display the list of all currently loaded service units, type in the command below:
systemctl list-units --type service
This command displays, for each service unit file, its full name (UNIT), its loaded status (LOAD), its high-level (ACTIVE) unit file activation state, followed by its low-level (SUB) unit file activation state, and finally a short description (DESCRIPTION).
The command ‘
systemctl list-units
’ displays, by default, only active units. In order to display a list of all loaded units (all states), you could execute this command with the--all
or-a
command line switches as follows:systemctl list-units --type service --all
Services that started before a given service
To find out the services which ordered to start before a specified service, type in the following command in the terminal:
systemctl list-dependencies --after ssh.service
Where you can see the services ordered to start before the service named
ssh
in the snapshot above.
Services that started after a given service
To determine the services which ordered to after after a specified service (
ssh
here), run the following command:systemctl list-dependencies before ssh.service
-
service
commandThe ‘
service
’ command utility allows to start, restart and stop and daemons as well as other services in Linux. In order to display the list of all services, run the command below:service --status-all
-
Checking a specific service enability status
To check whether a specific service was enabled at boot time, you could run the following syntax:
systemctl is-enabled {service_name}
systemctl is-enabled service_name.service
here the service name is
ssh
. -
Checking a specific service status
In order to see the status of a given service (enability flag is also provided as highlighted below), the following commands could be executed:
systemctl status {service_name}
systemctl status service_name.service
As an alternative to the command above, you could also use the command below:
systemctl list-unit-files --type service
Read: How to fix Bluetooth connection issues on Ubuntu 22.04
Enabling a specific service at boot time
It is possible to enable a single service by using the one of the commands below:
sudo systemctl enable {service_name}
sudo systemctl enable service_name.service
Disabling a specific service at boot time
Much like enabling a service, systemctl
is also able to disable a service by using one of the commands below:
sudo systemctl disable {service_name}
sudo systemctl disable service_name.service
Disabling a service prevents it (its service unit) from being automatically started at boot time.
This will read the [Install]
section of the specific service unit and deletes the appropriate symbolic links to the file /usr/lib/systemd/system/name.service
from the directory /etc/systemd/system/
and its subdirectories. Furthermore, you would be able to mask any service unit in order to prevent it from being started by another service or manually. To carry this out, execute the following command as root:
systemctl mask name.service
Stopping a specific service
Stopping a specific active service can be achieved via one the commands below (linux stop service):
sudo systemctl stop {service_name}
sudo systemctl stop service_name.service
Starting and Restarting a specific service
Starting a specific inactive service can be done via one the commands below:
sudo systemctl start {service_name}
sudo systemctl start service_name.service
For the restart:
sudo systemctl restart {service_name}
sudo systemctl restart service_name.service
Displaying services error messages/logs
To check error messages or logs related to the services, execute one of the commands below:
journalctl -u {service_name}
or as an alternative:
journalctl -u service_name.service
Starting a Conflicting Service
Both negative and positive dependencies between services exist in systemd
. Starting a specific service may be dependent on one or more other services (i.e. positive dependency). Negative dependency is similar but the dependency is related to stopping one or more services.
When you try to start a new service, all dependencies are resolved automatically by systemd
. The user does not get notified (explicitly) in this case. In case a service is already running, and at the same time you try to start yet another service which has a negative dependency, the first service in this case, will be automatically stopped.
For instance, if the postfix
service is already running and you attempt to start the sendmail
service, systemd
will first automatically stop the first service, i.e. postfix
, since these two services are conflicting as they cannot be executed on the same port.
If you like the content, we would appreciate your support by buying us a coffee. Thank you so much for your visit and support.