Use systemctl instead of service command
April 22, 2022
TLDR;
service
is less functional wrapper around systemctl
command on systemd based distros.
Details
I’m a long time Linux user and got a habit to start/stop things using service
command.
I never really thought about what exactly it does. I mean, I know I can start Apache or something else with it and it’s something related to init system of my distro.
Usually when you install Apache or PHP-FPM those things become recognizable by service
command and you can call service program start
when you want to start a service.
I never really needed to write my own init scripts so I successfully skipped any knowledge related to init systems of various distros I used.
Today I was reading Fedora Manual for Administrators and there are lot of stuff written about systemd and its insisted to use systemctl
command. Why is that if service
works too.
Let’s close this question.
Turned out systemctl
is part of systemd
package/program/init-system. And this is the tool to use when you want to interact with systemd
.
service
on the other hand is a script that allows you to start/stop other scripts defined in /etc/init.d
folder which was used by other init-systems in the past.
Most systemd-based distros provide service
command for backward compatibility.
At first this command is going to look into /etc/init.d
folder and if no service found there then it will try to use systemctl
.
service
command doesn’t support all possible arguments supported by systemctl
.
So if you consciously decided to use systemd then you definitely should use systemctl
because it is the command that allows you to interact with systemd
services.
service
command behaves like proxy to systemctl
. Of course it behaves like proxy only if you don’t use /etc/init.d
for your daemons which you probably shouldn’t do on systemd based system.
Feel free to contact me for feedback or questions. Find my contacts on About page.