What is Service in Linux

In easy terms, a service is a program or application in Linux that runs or expects to run in the background. That is, it is running without the need for the user to be aware of it all the time.

Generally, a Linux service has the following characteristics:

  • No graphical interface. That is, users cannot interact with them through an interface.
  • The services are started with the system. Of course, in this case, I refer to the system services. Third-party services such as MySQL can be configured to start or not with the system.
  • When running in the background, they wait for a signal to start a certain task.

These features are not restrictive to all services but it gives you a general idea of what they are.

At this point, you are probably wondering what some of the Linux services are. Well, some services are:

  • httpd
  • mysql
  • postgresql
  • proftpd
  • bluetooth
  • apparmor
  • cups

And many more applications are managed through a service.

Service management on Linux

The most important and modern distributions have migrated to systemd to manage system services. systemd has a command called systemctl with which you can perform basic tasks.

Normally, you want to know which are the system services, and for that, you just need to run in a terminal:

sudo systemctl list-units --type service

As you can see, you need root permissions for this.

You will get an output similar to this.

  UNIT                                                  LOAD   ACTIVE SUB     DESCRIPTION                                                                  
  accounts-daemon.service                               loaded active running Accounts Service                                                             
  acpid.service                                         loaded active running ACPI event daemon                                                            
  alsa-restore.service                                  loaded active exited  Save/Restore Sound Card State                                                
  apache2.service                                       loaded active running The Apache HTTP Server                                                       
  apparmor.service                                      loaded active exited  Load AppArmor profiles                                                       
  avahi-daemon.service                                  loaded active running Avahi mDNS/DNS-SD Stack

Some key points of the screen output obtained

  • UNIT: Name of the service
  • LOAD: To know if it is loaded in the memory
  • ACTIVE: State in which it is (High level) can be active, reloading, inactive, failed, activating, deactivating.
  • SUB: State of activation (Low level) can be in one of the following states: dead, closed, failed, inactive or running.
  • Description: Brief description of the service

By default, this command shows only the active services, but you can further expand the output by showing all of them, including the inactive ones.

sudo systemctl list-units --type service --all

The handling of the services as such is simple. If you want to start one, just follow this syntax

sudo systemctl start [service]

For example:

sudo systemctl start apache2

Occasionally, you may want to stop the service

sudo systemctl stop [service]

Or restart it to apply some changes to the tool’s settings

sudo systemctl restart [service]

Occasionally, you may want to reload the configuration of the service or the application that manages it.

sudo systemctl reload [service].

Earlier I told you about services that start with the system, if you want one to do so then

sudo systemctl enable [service]

If a service already starts with the system you want to disable it then run

sudo systemctl disable [service].

Finally, you can check the status of a service with the command

    sudo systemctl status [service]

This last command is one of the most commonly used because it monitors the operation of applications associated with a service.


Scroll to Top