How To Control Service In CentOS 7 with Systemd
The ability to manage services through Systemd is an essential element in the overall control of a Linux server. Different tools are used in various Linux distributions to manage services. In the distribution of CentOS 7, the Systemd tool is used for this purpose. This article is created with the aim of examining how to control systems and services in operating systems that run the Systemd tool.
What Is Systemd?
Systemd is a manager for Linux systems and services that is compatible with all LSB and SysV systems.
What Are The Benefits Of Systemd?
- Systemd provides dynamic parallel processing capability.
- Uses D-bus activities and sockets to start services.
- Start on-demand services.
- Tracks processes using the Linux control group.
- Supports snapshotting and restore system mode.
- Hold the mount and automount points and implement a service control logic based on interdependence.
In Systemd, all services, sockets, mount points, devices are called units. In the Linux ecosystem, Systemd is implemented in most Linux distributions with a few exceptions. Systemd has replaced SysV init in centos 7, which makes the operating system boot faster because Systemd uses fewer scripts and also executes most tasks simultaneously (in parallel).
What Is Systemctl?
Systemctl is a system tool for managing and controlling Systemd.
Get Started With Systemd And Systemctl
For the first step to start working with Systemd, we use the following command to check whether Systemd is installed on the Linux distribution and what version of it is installed on our Linux operating system.
#debian based
system systemd --version
#rhel based system
systemctl --version
The output of the above command will be similar to the following if Systemd is enabled on your working distribution, in which Systemctl version 219 is enabled.
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETU P +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
If you see another message like -bash: Systemd: command not found, it means that Systemd is not used in your distribution or version and is probably still running on SysV, like Centos 5.
Check That Systemd Is Active Or Not
ps -eaf | grep [s]ystemd
If after executing the above command you do not see the output, of course, if Systemd is active in your system, this is almost impossible, except in special and possibly critical circumstances, it means that Systemd is disabled. And is not active, otherwise, you will see an output similar to the one below.
Systemd Boot Process Analysis
Using the below command, you can find out the approximate boot time of the operating system which will have the same output as below.
systemd-analyze
Boot Analysis Of Each Unit
Using the below command, you will see the time spent per unit from the beginning of the start-up process to its completion and full activation, as shown in the output below.
systemd-analyze blame
Get A List Of All Units
With the command below, you will see a list of all the units on the system as shown below.
systemctl list-unit-files
Get A List Of All Running Units
With the below command you will see all the units that are currently active, the output of which is as follows.
systemctl list-units
List Of All Failed Units
Using the below command in the shell environment, you can easily find all the stopped units and perform the desired operation to solve their problem, which will have the same output as below.
systemctl --failed
Check Whether The Service Or Unit Is On Auto-Start
By sending the below command, you will find out whether a unit or service is enabled in your system as an automatic start or auto-load, in response to which the word enable is enabled and the word disabled will be printed.
systemctl is-enabled httpd.service
Check The Status Of A Service Or Unit
To check the status of a service or unit, we use the below command, if it is not active, the output will be as follows.
systemctl status firewalld.service
And if an output service is active, you will see the same output as below.
How To Manage And Control Services Using Systemctl
So far, we are familiar with some systemctl commands and the systemd mechanism, but a very important and useful part of the systemctl command is how to manage and control services, which we will discuss below.
List Of All Active And Inactive Services Of The System
To get the list of services, we use the below command, the output of which will be similar to the following.
systemctl list-unit-files --type=service
Note: If you want to filter services with state or special status such as enabled in the above list so that only units with the desired status are displayed, you can do this:
Code: systemctl list-unit-files --type=service --state=enabled
The status of the mask in the state column of the list of services or units means it cannot be started, meaning that this unit will not be run or started manually or even at the request of other services/software.
How To Reload Services With Systemctl Start, Stop, Restart In Linux VPS
For this purpose, you can use the following commands, due to the specificity of the operation performed by each command, we ignore its explanation.
systemctl start httpd.service
systemctl restart httpd.service
systemctl stop httpd.service
systemctl reload httpd.service
systemctl status httpd.service
How To Change A Service To Active Or Inactive Status (Auto-Start At System Boot)
To start a service automatically at boot time, use the below command.
systemctl enable httpd.service
To get a service out of auto-start mode, we use the below command.
systemctl disable httpd.service command
To start non-startup mode, use the below command.
systemctl mask httpd.service command
To exit the non-startup mode use the below command.
systemctl unmask httpd.service
How To Kill A Service With Systemctl
You must know that kill in software systems means immediate stop of a process, but of course, kill itself can be executed with several different methods, each of which has its own description, which we must explain in a separate post. You can kill a service via the below command.
systemctl kill httpd
Manage Mount Points Using Systemctl
When we create a partition in Linux, to access it, we have to connect this partition to a directory. This operation is called mounting, which we will explain in detail about this and how to mount it in future articles.
The powerful systemctl tool also helps you manage the mount point, which we’ll cover later.
List Of All Mount Points
Using the below command, you get the list of mount points, the output of which will be as follows.
systemctl list-unit-files --type=mount
How To Stop, Start, Reload And Get The Status Of A Mount Point
You can perform the mentioned operations using the following commands.
systemctl start tmp.mount
systemctl stop tmp.mount
systemctl restart tmp.mount
systemctl reload tmp.mount
systemctl status tmp.mount
How To Enable Or Disable A Mount Point During System Boot (automount)
The following commands work as well as for services for automount is is-active to check the current status of a mount point.
systemctl is-active tmp.mount
systemctl enable tmp.mount
systemctl disable tmp.mount
systemctl mask tmp.mount
systemctl unmask tmp.mount
How To Manage And Control Sockets Using Systemctl
As you can see in the mount points, all the commands and functions of the systemctl command in the mount points were the same as in the previous one in controlling the services, except that in all the commands we replaced the word service with the word mount. The same applies to the management and control of sockets as all previous commands and the only socket is used instead of service.
Get A List Of Sockets Using Systemctl
To get the list of active and inactive sockets, use the below command, where you will see the output as before.
systemctl list-unit-files --type=socket
How To Stop, Start, Reload And Get The Status Of A Socket Using Systemctl
You can perform the mentioned operations using the following commands.
systemctl start cups.socket
systemctl restart cups.socket
systemctl stop cups.socket
systemctl reload cups.socket
systemctl status cups.socket
How To Enable Or Disable A Socket At Boot Time (Auto Start)
The following commands, as in the case of services, also work to auto-start sockets. Is-active to check the current status of a socket.
systemctl is-active cups.socket
systemctl enable cups.socket
systemctl disable cups.socket
Put The Socket State In Non-Startup Mode On Linux With Systemctl
Using the first command, you can put a socket in Linux in a non-executable state using Systemctl so that it does not run manually or at the request of other services, and cancel this state with the second command.
systemctl mask cups.socket
systemctl unmask cups.socket
Summary
As you can see, Systemd is a powerful tool that you can use to manage services in RHEL and Debian based systems.
I hope you’ve enjoyed this post and found it useful.